2014-10-01 1 views
0

Jboss AS 7에서 전쟁으로 배포되던 웹 응용 프로그램이 있습니다. 이 webapp는 reasteasy와 jackson (2.0)을 모두 사용하여 mongodb 데이터베이스의 데이터를 직렬화하고 deserealize합니다. 얼마 전에 webapp을 2 개의 다른 maven 모듈과 API (jar) 및 WAR로 분리해야했습니다. 모든 POJO는 jar 모듈에있었습니다. 문제는 모든 잭슨 주석이 쓸모 없게되었다는 것입니다. 그들은 단지 완전히 무시됩니다. 더 많은 정보 JBoss에 배포-structure.xml :종속 항아리에서 Jackson 2.0 주석이 무시되었습니다.

<exclusions> 
    <module name="org.codehaus.jackson.jackson-core-asl"/> 
    <module name="org.codehaus.jackson.jackson-mapper-asl"/> 
</exclusions> 

POM (API)는

<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-annotations</artifactId> 
    <version>2.0.0</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-core</artifactId> 
    <version>2.0.0</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>2.0.0</version> 
    <scope>provided</scope> 
</dependency> 

POM (WAR)

<dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-annotations</artifactId> 
     <version>2.0.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>2.0.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>2.0.0</version> 
     <scope>provided</scope> 
    </dependency> 

내가 읽어 reasteasy 모듈과 잭슨 모듈 수 resteasy가 오래된 잭슨 버전을 사용하고 있기 때문에 어떻게 든 충돌합니다. 어떻게 확인할 수 있습니까? 아니면 jboss 클래스 로더의 문제입니까? (Jackson 2 annotations ignored in EJB Jar with JBoss (6.2.0 GA))

답변

0

@ NokusFerreira, 기본적으로 올바른 것입니다. 나는 이것이 오래된 질문이라는 것을 알고 있지만이 대답이 누군가에게 도움이되기를 바랍니다.

문제가 발생하면 (JAR의 직렬화 중 또는 WAR의 직렬화 해제 중) 알려주지 않았기 때문에. WAR 모듈 내부의 비 직렬화 중에이를 추측하고 있습니다.

예, 다음 WAR 아마 resteasy-clientresteasy-jackson-provider, 여기에 문제를 사용하는 경우가있다 - 다른 모듈이 필요 RESTEasy가 잭슨 2.x에서 작업을하기 때문에 : 오래된 대신 ("2"접미사를 참고하시기 바랍니다) resteasy-jackson2-providerresteasy-jackson-provider.

<dependency> 
    <groupId>org.jboss.resteasy</groupId> 
    <artifactId>resteasy-jackson2-provider</artifactId> 
    <version>3.0.11.Final</version> 
</dependency> 

불행히도 resteasy-jackson2-provider은 JBoss 7.1에 번들로 제공되지 않습니다.

그래서 기본적으로는 다음과 같은 한 옵션 : 새 서버 (제이보스 등)

  • 마이그레이션.
  • JBoss에서 RESTEasy 라이브러리를 업그레이드하십시오. 코드를 다운 그레이드
  • 그것은 의존성으로 선언 라이브러리는 응용 프로그램 서버에서 제공하는 (그리고 당신이 제품과 다를 수하는 JEE 세계에서 공통의 불편 잭슨 1.x에서

를 사용하는 당신이 사용하는 생각).


편집
또한이 답변이 도움이 될 수 있습니다 How to make Resteasy 2.3.6 use Jackson 2.+

관련 문제