2011-08-15 19 views
2

我需要使用RESTEASY的其餘應用程序的CDI功能。所以我按照manual's instruction在我的應用上設置了resteasy-cdi模塊,該模塊運行在JBoss AS7上。resteasy-cdi - 獲取「重複的上下文初始化參數resteasy.injector.factory」錯誤

但是,當我開始出現以下異常的服務器:

13:48:08631 ERROR [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> 

我試過服務器al參數的組合,並嘗試像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來通過注入來使用JPA的EntityManager。我知道我可以在沒有它的情況下使用,但是我更願意這樣做,以便我可以探索JTA的整合和CDI在未來的功能。

謝謝。

回答

2

我遇到了同樣的錯誤,嘗試了RestEasy jar版本和包含/排除,並沒有解決它的進度。所以我在RestEasy JBoss問題跟蹤器(https://issues.jboss.org/browse/RESTEASY-586)上報告了一個錯誤,我希望最終能得到答覆。我也使用JBoss AS 7和最新的RestEasy和CDI和Seam。

我的應用程序運行良好的Glassfish的3.1.1,但打破了(這個「複製上下文初始化參數resteasy.injector.factory」錯誤),當我提出到JBoss AS 7

7

的問題是,AS7束resteasy-cdi,你也捆綁它。 AS7部署掃描程序從兩個罐子中挑選並處理Web碎片,它們聲明resteasy.injector.factory給出「重複」錯誤。你有兩個選擇,使用提供的resteasy版本(首選)或刪除提供的模塊。

對於第一個選項,您設置了您提供的maven依賴項,並在清單中添加對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> 

,並添加一個依賴於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附帶的破壞戰爭和固定戰爭的示例以瞭解更多詳情。

0

其餘的easy-cdi模塊已經與J Boss AS自版本6.0.0 M4捆綁在一起。因此不需要顯式添加CdiInjectorFactory工廠。

<context-param> 
<param-name>resteasy.injector.factory</param-name> 
<param-value>org.jboss.resteasy.cdi.CdiInjectorFactory</param-value> 
</context-param> 

但是,如果你使用的是Tomcat,或者您需要添加此上面的行代碼在web.xml中的任何其他服務器。

相關問題