J'ai lu attentivement l'article sur Intercepteurs dans la documentation Seam/Weld et a mis en place un système de gestion de la qualité. InterceptorBinding
:
@InterceptorBinding
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface MyLog {}
et un Interceptor
classe :
@MyLog @Interceptor
public class ErpLogInterceptor implements Serializable
{
@AroundInvoke
public Object logMethodEntry(InvocationContext invocationContext) throws Exception
{..}
@PostConstruct
public Object logPostConstruct(InvocationContext invocationContext) throws Exception
{...}
}
Non, j'ai essayé d'activer l'intercepteur dans le fichier @Named @ViewScoped
haricot :
@javax.inject.Named;
@javax.faces.bean.ViewScoped
public class MyBean implements Serializable
{
@PostConstruct @MyLog
public void init()
{...}
@MyLog public void toggleButton()
{..}
}
Si j'appuie sur un bouton dans ma page JSF, la méthode toggleButton
est invoqué correctement et la méthode Interceptor logMethodEntry
est appelé. Mais il semble que la méthode @PostConstruct
(qui m'intéresse) n'est jamais interceptée par ma classe.
La question semble être liée à Intercepteurs Java EE et bean @ViewScoped mais en fait mon intercepteur fonctionne dans normal des méthodes.