CDI - L'observation des événements conteneurs
-
30-09-2019 - |
Question
Je suis en train d'observer les deux démarrage et d'arrêt des événements pour une application web CDI. J'ai un haricot ApplicationScoped qui écoute ces événements:
@ApplicationScoped
public class PrettyfacesStartupObserver
{
private static final Log LOGGER = LogFactory.getLog(PrettyfacesStartupObserver.class);
public PrettyfacesStartupObserver()
{
LOGGER.debug("\n\n\n\n\n\n\n\n\n\nconstructor");
}
public void onStartup(@Observes
AfterBeanDiscovery afterBeanDiscovery
)
{
LOGGER.debug("\n\n\n\n\n\n\n\n\n\nafter bean discover");
}
public void onStartup(@Observes
AfterDeploymentValidation afterDeploymentValidation
)
{
LOGGER.debug("\n\n\n\n\n\n\n\n\n\n\nafter deployment validation");
}
public void onShutdown(@Observes
BeforeShutdown beforeShutdown
)
{
LOGGER.debug("\n\n\n\n\n\n\n\n\n\n\nbefore shutdown:" + beforeShutdown);
}
Je ne vois rien dans les journaux.
Qu'est-ce que je manque?
La solution
Merci à Pete Muir, la solution était de mettre en œuvre l'interface d'extension. Une fois que je l'ai fait, ainsi que la création d'un fichier spécial, il a parfaitement fonctionné.
La chose à retenir est, si vous voulez observer (ou agir) des événements de conteneurs, vous devez implémenter l'interface d'extension car il est un événement spécial.
https: //docs.jboss. org / soudure / référence / latest / en-US / html / extend.html # d0e4984
Walter
Autres conseils
Le "dossier spécial" mentionné par Walter White est:
META-INF/services/javax.enterprise.inject.spi.Extension
Ce fichier doit contenir le nom complet de votre classe d'extension. à-dire:
org.mydomain.extension.MyExtension