Disons que je l'intercepteur suivante dans une application SEAM:SEAM: Composant "désinjecté" "trop tôt" dans l'intercepteur?
public class MyInterceptor {
@In
private Monitor myMonitor;
@AroundInvoke
public Object aroundInvoke(InvocationContext ctx) throws Exception {
try {
myMonitor.a();
return ctx.proceed();
}
finally {
myMonitor.b();
}
}
}
myMonitor.a() fonctionne, myMonitor.b() (si correctement moniteur est injecté) échoue parce que Monitor est déjà nulle. Seam Doc indique: "Les valeurs injectées sont désinjectées (c'est-à-dire, mises à zéro) immédiatement après l'achèvement et l'élimination de la méthode."
Est-ce que c'est ce qui se passe? Puis-je faire quelque chose pour dire à SEAM de ne pas "désinjecter" le composant? Je peux bien sûr aussi faire quelque chose comme XContext.get (..), mais je me demande s'il s'agit d'un bug ou d'une erreur de mon côté. Merci!
@Shervin Bon à savoir (+1), Shervin. Seam Framework: Découvrez l'évolution de Java EE dit que vous pouvez éviter @ In-jection en utilisant une seule méthode setter sans aucune annotation @In. –