java - resteasy-cdi 中断部署到 Tomcat 7

标签 java tomcat jboss tomcat7 resteasy

我正在使用 resteasy 3.0.6.Final 开发一个简单的 REST 服务器,它被部署到 tomcat 7.0.50。

根据official doc ,基本上有两种方法:

  1. 使用 ServletContainerInitializer,它在 resteasy-servlet-initializer 包中实现。

  2. 使用 web.xml 和 servlet 调度程序。

我已经尝试过这些方法,它们都对我有用。

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

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-cdi</artifactId>
    <version>3.0.6.Final</version>
</dependency>

到我的 war /WEB-INF/lib。

但是,这会破坏部署。 Tomcat 仅在 catalina.out 中显示以下错误消息:

Jan 20, 2014 10:24:06 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error filterStart
Jan 20, 2014 10:24:06 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/storage] startup failed due to previous errors

网上有很多关于删除resteasy-cdi的建议。所以

  1. 为什么 resteasy-cdi 会破坏部署?是否有记录问题的工单?
  2. 否则如何将 resteasy 与 WELD 集成?

感谢您的帮助。

更新 1

经过一段调试后,问题变得非常简单:resteasy-cdi 需要一个具体的 CDI 实现才能工作,这意味着我应该包括

    <dependency>
        <groupId>org.jboss.weld.servlet</groupId>
        <artifactId>weld-servlet</artifactId>
    </dependency>

在我的构建中。

另一个注意事项是关于 official doc 中提到的配置 WELD .当我在我的 web.xml 中包含这两个监听器时,

<listener>
   <listener-class>org.jboss.weld.servlet.WeldInitialListener</listener-class>
</listener>
<listener>
   <listener-class>org.jboss.weld.servlet.WeldTerminalListener</listener-class>
</listener>

我的 localhost.log 中出现以下错误

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>

成功了,war 文件部署成功。

最佳答案

我已经询问了 official weld forum 中的 Singleton is not set 异常这是文档中的错误。正如您所做的那样,您应该使用“原始”org.jboss.weld.environment.servlet.Listener

关于java - resteasy-cdi 中断部署到 Tomcat 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21245687/

相关文章:

JAVA 将 ID 链接到其他表中的名称

java - 一起使用 BufferedWriter 和 BufferedOutputStream 是不是太过分了?

eclipse - Struts 没有 Action 映射问题

java - 多项检查最终导致重新评估 Drools Execution KIE 中的规则

java - 有没有办法更新 Reactor 3 中的上下文?

Java,按对象获取ArrayList索引

java - 编写一条规则,根据访问情况检测客户在商店某个部门的位置

java - KeyCloak 2.3 导出时出现 NPE

java - Spring boot 2 从 Spring boot 1.5 迁移到 redis 问题

tomcat - XAMPP:启动tomcat时出错