【发布时间】:2013-12-27 07:17:36
【问题描述】:
我在 IntelliJ 中有一个 maven 项目,我正在尝试将 war 文件部署到码头容器。这样做的目的是为了对上述 war 文件中的某些功能进行快速集成测试。
由于开箱即用的 Jetty 不附带 CDI 或 JNDI,我正在尝试添加对这些的支持,但遇到了一些问题。例如,我在启动时收到以下错误:
15:30:50 [34mINFO [0;39m o.a.s.c.CdiObjectFactory - [lookup]: Checking for BeanManager under JNDI key java:comp/BeanManager
15:30:50 [39mDEBUG[0;39m o.a.s.c.CdiObjectFactory - [lookup]: BeanManager lookup failed for JNDI key java:comp/BeanManager
我已经在我的 pom 中包含了weld-servlet jar,并且还在 web.xml 中添加了焊接监听器,但是它仍然无法工作。我正在使用 Jetty 9。有什么想法吗?
pom.xml
<dependency> <groupId>org.jboss.weld.servlet</groupId> <artifactId>weld-servlet-core</artifactId> <version>2.0.4.Final</version> </dependency>web.xml
<listener> <listener-class>org.jboss.weld.environment.servlet.Listener</listener-class> </listener>
<resource-env-ref>
<description>Object factory for the CDI Bean Manager</description>
<resource-env-ref-name>BeanManager</resource-env-ref-name>
<resource-env-ref-type>javax.enterprise.inject.spi.BeanManager</resource-env-ref-type>
</resource-env-ref>
【问题讨论】:
-
发现问题。事实证明,类加载器对在哪里获得适当的 WELD 支持感到困惑。我有我的 pom 中指定的焊接 servlet,但我正在部署的战争也有其他的罐子也带来了焊接。我将启动码头的项目分离到一个新的 IntelliJ 项目中,它工作得很好。感谢您的所有建议。