Je construis une application Java EE en utilisant JBoss 7.1.Java EE et Interceptor @ViewScoped haricots
Afin d'obtenir une vérification complète des actions de l'utilisateur, je suis planing d'utiliser Interceptor pour se connecter chaque invocation des méthodes de mes haricots.
Pour ce faire, je l'Biding suivante:
@Inherited
@InterceptorBinding
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface Logged {
}
Je définit ma classe intercepteur:
@Logged
@Interceptor
public class UserActionInterceptor implements Serializable {
private static final long serialVersionUID = 1L;
private Logger log = LoggerFactory.getLogger(UserActionInterceptor.class);
public UserActionInterceptor() {
}
@AroundInvoke
public Object logMethodEntry(InvocationContext invocationContext) throws Exception {
log.debug(invocationContext.getMethod().getName() + " invoked.");
return invocationContext.proceed();
}
}
Jusqu'à présent, cela fonctionne bien. Si je lie une classe en utilisant cet Interceptor, j'obtiens un enregistrement. Cependant, il devient plus difficile quand je veux cibler mes classes de haricots.
Si j'ai un bean de type @RequestScoped et le lier à mon intercepteur cela fonctionne. Toutefois, si j'ai un bean de type @ViewScoped, alors il n'est pas.
Je regardais la définition de @ViewScoped et je l'ai trouvé:
@Retention(value=RUNTIME)
@Target(value=TYPE)
@Inherited
public @interface ViewScoped
J'ai le sentiment que le problème réside dans le fait que cette annotation ne pas le type de cible MÉTHODE et que empêche mon intercepteur d'intercepter les appels aux méthodes de classe.
Quelqu'un at-il eu le même problème avant? Est-ce que quelqu'un sait s'il est possible d'étendre la portée du grain afin que ses méthodes peuvent être interceptées sans changer la nature du @ViewScoped?