resteasy-cdi breaks deployment to Tomcat 7
我正在使用resteasy 3.0.6.Final开发一个简单的REST服务器,该服务器已部署到tomcat 7.0.50。
根据官方文档,基本上有两种方法可以做到:
使用ServletContainerInitializer,该实现在包
使用
我尝试了这些方法,它们都对我有用。
现在我想使用WELD添加CDI支持,为此,我需要添加依赖项
1 2 3 4 5 | <dependency> <groupId>org.jboss.resteasy</groupId> resteasy-cdi</artifactId> <version>3.0.6.Final</version> </dependency> |
转到我的war / WEB-INF / lib。
但是,这会中断部署。 Tomcat在catalina.out中仅显示以下错误消息:
1 2 3 4 |
在线上有很多关于删除resteasy-cdi的建议。所以
感谢您的帮助。
更新1
在进行了一次调试之后,问题很简单:resteasy-cdi需要一个具体的CDI实现才能工作,这意味着我应该包含
1 2 3 4 | <dependency> <groupId>org.jboss.weld.servlet</groupId> weld-servlet</artifactId> </dependency> |
在我的作品中。
另一个说明是关于配置官方文档中提到的WELD的。当我在web.xml中包含这两个侦听器时,
1 2 3 4 5 6 | <listener> <listener-class>org.jboss.weld.servlet.WeldInitialListener</listener-class> </listener> <listener> <listener-class>org.jboss.weld.servlet.WeldTerminalListener</listener-class> </listener> |
我的localhost.log中出现以下错误
1 2 3 | Jan 20, 2014 11:55:40 PM org.apache.catalina.core.StandardContext listenerStart SEVERE: Exception sending context initialized event to listener instance of class org.jboss.weld.servlet.WeldInitialListener java.lang.IllegalStateException: Singleton is not set. Is your Thread.currentThread().getContextClassLoader() set correctly? |
我不确定文档是否有误,但是用
替换了侦听器
1 2 3 | <listener> <listener-class>org.jboss.weld.environment.servlet.Listener</listener-class> </listener> |
成功完成了把戏和战争文件的部署。
我已经在官方焊接论坛中提出了