Java resteasy cdi中断了对Tomcat 7的部署

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 3.0.6.Final开发一个简单的REST服务器,该服务器已部署到Tomcat7.0.50

根据调查,基本上有两种方法:

  • 使用ServletContainerInitializer,它在包
    resteasy servlet初始值设定项
    中实现

  • 使用
    web.xml
    和servlet调度器

  • 我尝试过这些方法,它们都对我有效

    现在我想使用WELD添加CDI支持,为此我需要添加依赖项

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-cdi</artifactId>
        <version>3.0.6.Final</version>
    </dependency>
    
    网上有很多关于删除resteasy cdi的建议。所以

  • 为什么resteasy cdi会破坏部署?是否有记录问题的记录单
  • 否则如何将resteasy与WELD集成
  • 谢谢你的帮助

    更新1

    经过一段时间的调试,问题变得非常简单:resteasy cdi需要一个具体的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>