2011-08-15 3 views
2

RESTEASY를 사용하는 나머지 응용 프로그램에서 CDI 기능이 필요합니다. 그래서 manual's instruction을 따라 JBoss AS7에서 실행되는 내 응용 프로그램에서 resteasy-cdi 모듈을 설정했습니다.resteasy-cdi - "Duplicate context initialization parameter resteasy.injector.factory"오류가 발생했습니다.

그러나 나는 다음과 같은 오류 얻을 서버 시작할 때 :

13 : 48 : 08,631 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> 

매개 변수의 조합을 시도하고 또한 this thread처럼 구성하려고했지만 성공하지 못했습니다.

web.xml에서 javax.ws.rs.core.Application을 지정하고 resteasy.scan을 사용하지 않도록 설정해도 문제가 해결되지 않았습니다. 나는 또한 함께하고 this article 같은 종속성의 선언과 함께하고 이슈 RESTEasy가-jarxs없이 테스트를 시도했습니다

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

:

내 pom.xml 파일은 다음과 같은 내용이있다.

저는 정말 길어요. 아이디어가 있습니까? JPA의 EntityManager를 주입을 통해 사용하려면 CDI 또는 EJB가 필요합니다. 나는 그것 없이도 사용할 수 있다는 것을 알고 있지만 앞으로 JTA의 통합과 CDI의 기능을 탐색 할 수 있기를 바랍니다.

감사합니다.

답변

2

RestEasy jar 버전 및 포함/제외로 실험 한 동일한 오류가 발생하여이를 해결하지 못했습니다. 그래서 나는 RestEasy JBoss 이슈 트래커 (https://issues.jboss.org/browse/RESTEASY-586)에 버그를보고했습니다. 그 버그는 결국 답장을 얻을 수 있기를 바랍니다. 또한 JBoss AS 7과 최신 RestEasy 및 CDI 및 Seam을 사용하고 있습니다. 나는 7

7

AS 보스로 이동하는 경우

내 응용 프로그램은 문제가 AS7 번들입니다 (이 "중복 컨텍스트 초기화 매개 변수 resteasy.injector.factory"오류와 함께) 글래스 피쉬 3.1.1에서 잘 작동하지만, 파산 resteasy-cdi 그리고 그것도 번들로 제공하고 있습니다. AS7 배치 스캐너는 resteasy.injector.factory 'duplicate'오류를 나타내는 양쪽 항아리의 웹 조각을 집어서 처리합니다. 두 가지 옵션이 있습니다. 제공되는 resteasy 버전 (권장)을 사용하거나 제공된 모듈을 제거하십시오.

첫 번째 옵션으로 제공된대로 Maven 종속성을 설정하고 매니페스트에서 resteasy에 종속성을 추가하십시오. 예를 들어,

<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에 종속성을 추가 : AS7의 최신 버전을 실행하려면 (https://github.com/jbossas/jboss-as에서 구축) 더 같이하기 위해 설정을 변경하려고

<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 모듈은 버전 6.0.0 M4부터 J Boss AS에 번들되었습니다. CdiInjectorFactory 팩토리를 명시 적으로 추가 할 필요가 없습니다.

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

하지만 바람둥이 또는 다른 서버를 사용하는 경우 위의 코드 줄을 web.xml에 추가해야합니다.