Pregunta

Estoy intentando observar tanto los eventos de inicio y cierre de una aplicación web CDI. Tengo un bean ApplicationScoped que escuchas para esos eventos:

@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);
    }

No veo nada en los registros.

¿Qué me falta?

¿Fue útil?

Solución

Gracias a Pete Muir, la solución fue implementar la interfaz de extensión. Una vez que lo hice, junto con la creación de un archivo especial, que funcionó a la perfección.

Lo que hay que recordar es, si se desea observar (o actuar sobre) los eventos de contenedores, debe implementar la interfaz de extensión, ya que es un evento especial.

https: //docs.jboss. org / soldadura / reference / latest / es-eS / html / extend.html # d0e4984

Walter

Otros consejos

El "archivo especial" mencionada por Walter White es:

META-INF/services/javax.enterprise.inject.spi.Extension

Ese archivo debe contener el nombre completo de la clase de extensión. es decir:

org.mydomain.extension.MyExtension
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top