我有一个使用 Resteasy(又使用 Weld)的 Web 项目,并部署到 Tomcat 7.0.22(我将特定版本放在这里,以防此版本特有的问题)。
我有一个看起来像这样的 ServletContextListener:
@WebListener
public class ApplicationInitialisationListener implements ServletContextListener {
// create a logger here
@Inject
HealthCheck healthCheck;
@Override
public void contextInitialized(ServletContextEvent event) {
if (healthCheck == null) {
log.error("healthCheck is null");
}
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
}
}
部署到 Tomcat 后,healthCheck is null
被记录了,我还注意到日志中的这一行:
<2013-11-13 13:27:40,191> <pack> INFO pool-2-thread-1 org.jboss.weld.environment.tomcat7.Tomcat7Container - Tomcat 7 detected, CDI injection will be available in Servlets and Filters. Injection into Listeners is not supported
问题1:为什么CDI注入在Listeners中不可用?
我查看了这个答案,它说Load on startup via @Startup. There is currently no equivalent to this in CDI.
问题 2:问题 1 中描述的问题是由此造成的吗?
问题 3:我正在使用org.jboss.weld.servlet:weld-servlet:1.2.0.Beta1
. 以后的版本中是否有关于启动支持的更新?
相关问题我 在 Weld 中查看了启动课程