CDI - Osservando container Eventi
-
30-09-2019 - |
Domanda
sto cercando di osservare sia gli eventi di avvio e di arresto per un'applicazione web CDI. Ho un bean ApplicationScoped che ascolti per quegli eventi:
@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);
}
Non vedo niente nei registri.
Che cosa mi manca?
Soluzione
Grazie a Pete Muir, la soluzione era quella di implementare l'interfaccia di estensione. Una volta che ho fatto, insieme con la creazione di un file speciale, ha funzionato perfettamente.
La cosa da ricordare è che, se si desidera osservare (o agire su) contenitore di eventi, è necessario implementare l'interfaccia di estensione in quanto è un evento speciale.
Walter
Altri suggerimenti
Il "file speciale" di cui parla Walter White è:
META-INF/services/javax.enterprise.inject.spi.Extension
Il file deve contenere il nome completo della classe Extension. vale a dire:
org.mydomain.extension.MyExtension