2017-02-03 4 views
0

Glassfish3에서 Payara Micro로 배포 할 때 JAX-RS 직렬화 (jersey + jackson)가 더 이상 작동하지 않습니다. AdamJAX-RS : POJO 직렬화가 실패했습니다.

덕분에, 우리는 POJO를 반환 할 때 우리는 지금과 유사한 오류가 발생, 순수한 컬렉션을 직렬화와 함께 문제를 해결 : BirdyTO 다른되는 POJO 및/또는되는 POJO의 컬렉션을 포함하는 POJO이다

@GET 
@Produces("application/json") 
public BirdyTO findAllDaBirdy() { 
    return getBirdy(); 
} 

. 하나는 우리에게 오류 준다

:

MessageBodyWriter not found for media type=application/json;charset=utf-8, type=class org.example.BirdyTO, genericType=class org.example.BirdyTO. 

이상한 일입니다 같은 응용 프로그램이 잘 작동 유사한 인터페이스를 제공합니다.

아이디어가 있으십니까?

+0

.war에 필요한 모든 jackson 종속성이 있는지 확인 했습니까? 그리고 BirdyTO Class 코드를 추가 할 수 있습니까? – FrAn

답변

0

JSON에 POJO 매핑은 Java EE에서 표준화되지 않았습니다. Glassfih 4/Payara는 POXO를 기본적으로 JSON에 매핑하기 위해 MOXy를 사용하는데, 이는 매핑을 위해 JAXB를 사용합니다. [Reza Rahman의이 게시물] (https://blogs.oracle.com/theaquarium/entry/moxy_is_the_new_default)을 참조하십시오. Mird가 BirdyTO를 매핑 할 수없는 경우도 있습니다. 당신이 잭슨을 사용하려면

, 당신은에 있습니다

  • 비활성화 기본 목시 기능
  • 앱 (com.fasterxml.jackson.jaxrs)
  • 턴에 잭슨 라이브러리를 추가 (jersey.config.server.disableMoxyJson 재산 true에 설정하여) JAX-RS 애플리케이션의 JacksonFeature (Jackson 라이브러리에서 제공)를

추가 정보 swer : Customizing JSON marhsalling with GlassFish v4

+0

골드 정보와 정확한 해결책. 고마워요! 아직도 MOXy가 POJO를 매핑하는 데 실패한 이유는 모르겠지만, 우리가 처음에 우리의 앱을 만들었 기 때문에 jackson에 충실해야한다고 생각합니다. – simomat

+0

우리는 그것을 얻었다. 분명히 MOXy는 전송 POJO가 기본 생성자를 필요로한다. – simomat

+0

Java EE 8에서 매핑은 JSON-B 사양에 따라 표준화되어야합니다. 그때까지, 행동은 이것과 같은 미묘한 차이에서 다릅니다. 답변을 올바른 답변으로 표시하십시오 :) – OndrejM