У меня есть веб-проект, использующий Resteasy (который, в свою очередь, использует Weld), и он развернут на 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 недоступно в прослушивателях?
Я просмотрел этот ответ, и он говорит 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