题
我正在尝试观察CDI Web应用程序的启动和关闭事件。我有一个应用程序的bean来听这些事件:
@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);
}
我在日志中看不到任何东西。
我想念什么?
解决方案
多亏了皮特·缪尔(Pete Muir),解决方案是实现扩展接口。一旦我这样做,以及创建一个特殊文件,它可以很好地工作。
要记住的事情是,如果您想观察(或行动)容器事件,则必须实现扩展接口,因为这是一个特殊的事件。
https://docs.jboss.org/weld/reference/latest/en-us/html/extend.html#d0e4984
沃尔特
其他提示
沃尔特·怀特(Walter White)提到的“特殊文件”是:
META-INF/services/javax.enterprise.inject.spi.Extension
该文件应包含扩展名的完全合格名称。 IE:
org.mydomain.extension.MyExtension
不隶属于 StackOverflow