gpt4 book ai didi

jboss - resteasy-cdi - 出现 "Duplicate context initialization parameter resteasy.injector.factory"错误

转载 作者:行者123 更新时间:2023-12-01 10:36:11 28 4
gpt4 key购买 nike

我在使用 RESTEASY 的休息应用程序上需要 CDI 功能。所以我跟着manual's instruction在我的应用程序上设置 resteasy-cdi 模块,它在 JBoss AS7 上运行。

但是当我启动服务器时出现以下错误:

13:48:08,631 错误 [org.apache.catalina.core.StandardContext](MSC 服务线程 1-4)上下文 [/MainService] 由于先前的错误启动失败:java.lang.IllegalArgumentException:重复上下文初始化参数resteasy.injector.factory

我的 web.xml 如下:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<listener>
<listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
</listener>
<servlet>
<servlet-name>Resteasy</servlet-name>
<servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
</servlet>
<context-param>
<param-name>resteasy.injector.factory</param-name>
<param-value>org.jboss.resteasy.cdi.CdiInjectorFactory</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>true</param-value>
</context-param>
<servlet-mapping>
<servlet-name>Resteasy</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>

我尝试了几种参数组合,并尝试像 this thread 中那样配置它也,但没有成功。

在 web.xml 上指定 javax.ws.rs.core.Application 并禁用 resteasy.scan 也没有解决问题。

我的 pom.xml 有以下内容:

<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-cdi</artifactId>
<version>2.2.1.GA</version>
</dependency>

我也尝试过使用和不使用神器 resteasy-jarxs 以及像 this article 这样的依赖声明进行测试。 .

我真的迷路了。你有什么想法?我现在需要 CDI 或 EJB 来通过注入(inject)使用 JPA 的 EntityManager。我知道我可以在没有它的情况下使用它,但我更愿意这样我可以在未来探索 JTA 的集成和 CDI 的功能。

谢谢。

最佳答案

问题是 AS7 捆绑了 resteasy-cdi 而你也捆绑了它。 AS7 部署扫描器从两个声明 resteasy.injector.factory 的 jar 中拾取并处理 web 片段,给出“重复”错误。您有两个选择,使用提供的 resteasy 版本(首选)或删除提供的模块。

对于您设置的第一个选项,请按照提供的方式设置您的 Maven 依赖项,并在您的 list 中添加对 resteasy 的依赖项。要在最新版本的 AS7(从 https://github.com/jbossas/jboss-as 构建)上运行,请尝试将您的配置更改为看起来更像这样:

<properties>
<resteasy.version>2.2.3.GA</resteasy.version>
<maven.war.plugin.version>2.1.1</maven.war.plugin.version>
</properties>

<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>${resteasy.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-cdi</artifactId>
<version>${resteasy.version}</version>
<scope>provided</scope>
</dependency>

并在 list 中添加对 resteasy-cdi 的依赖,例如:

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>${maven.war.plugin.version}</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<archive>
<manifestEntries>
<Dependencies>
org.jboss.resteasy.resteasy-jaxrs,
org.jboss.resteasy.resteasy-cdi
</Dependencies>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>

查看 $JBOSS_HOME/modules/org/jboss/resteasy/... 以了解您的 AS7 版本提供了哪个版本的 resteasy。

或者,您可以从 jboss 中删除这些模块并继续捆绑您自己的副本。

见附RESTEASY-586的断战和定战例子了解更多详情。

关于jboss - resteasy-cdi - 出现 "Duplicate context initialization parameter resteasy.injector.factory"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7068148/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com