Java resteasy cdi中断了对Tomcat 7的部署
我正在使用resteasy 3.0.6.Final开发一个简单的REST服务器,该服务器已部署到Tomcat7.0.50 根据调查,基本上有两种方法:Java resteasy cdi中断了对Tomcat 7的部署,java,tomcat,jboss,tomcat7,resteasy,Java,Tomcat,Jboss,Tomcat7,Resteasy,我正在使用resteasy 3.0.6.Final开发一个简单的REST服务器,该服务器已部署到Tomcat7.0.50 根据调查,基本上有两种方法: 使用ServletContainerInitializer,它在包resteasy servlet初始值设定项中实现 使用web.xml和servlet调度器 我尝试过这些方法,它们都对我有效 现在我想使用WELD添加CDI支持,为此我需要添加依赖项 <dependency> <groupId>org.jboss.
resteasy servlet初始值设定项
中实现web.xml
和servlet调度器<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-cdi</artifactId>
<version>3.0.6.Final</version>
</dependency>
网上有很多关于删除resteasy cdi的建议。所以
<dependency>
<groupId>org.jboss.weld.servlet</groupId>
<artifactId>weld-servlet</artifactId>
</dependency>
我不确定文档是否有误,但将侦听器替换为
<listener>
<listener-class>org.jboss.weld.environment.servlet.Listener</listener-class>
</listener>
org.jboss.weld.environment.servlet.Listener
技巧和war文件部署成功了。我问过,
单例未在中设置
异常,这是文档中的一个错误。正如您所做的,您应该使用“original”org.jboss.weld.environment.servlet.Listener
对您的问题的解释可能会出现在“以前的错误”中。在日志的前面检查它们。如果它们不存在,请检查日志配置是否没有抑制它们和/或临时提高日志级别。好的,通过向项目中添加和配置weld servlet,我终于完成了所有工作。似乎resteasy cdi需要一个实际的cdi实现才能工作(这是可以理解的,因为它只是一个桥梁)。@stackoverflower您介意发布一个到工作代码的链接吗?我使用的是完全相同的组合(RESTEasy+Weld),注入的bean总是空的。我的代码稍有不同,它是Groovy,使用Gradle构建并部署到Jetty,但如果这是我的问题,我们又回到了依赖供应商的黑暗时代。@AbhijitSarkar,这里是指向主要配置文件的链接@谢谢。以下是我遗漏的,并且出乎意料地没有出现在你的要点中。我一加上这个,CDI就开始了。resteasy.injector.factory org.jboss.resteasy.cdi.CdiInjectorFactory
<listener>
<listener-class>org.jboss.weld.servlet.WeldInitialListener</listener-class>
</listener>
<listener>
<listener-class>org.jboss.weld.servlet.WeldTerminalListener</listener-class>
</listener>
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?
<listener>
<listener-class>org.jboss.weld.environment.servlet.Listener</listener-class>
</listener>