2017-01-13 3 views
-1

매퍼에 등록 된 사용자 정의 JaxbAnnotationIntrospector의 성찰을 할 수있는 ContextResolver를 등록하는 방법 SerializationFeature.FAIL_ON_EMPTY_BEANS를 추가해야하기 때문에 JAX-RS 리소스에서 자체적으로 사용하는 Mapper를 사용자 정의 할 수 있습니다.JAX-RS 2.0 : 지금은 필요</p> <pre><code>public Set<Class<?>> getClasses() { ... classes.add(com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider.class); } </code></pre> <p>: 2.0 응용 프로그램을 사용하여 기능이나 내가 제대로 내 JAX-RS에 JacksonJaxbJsonProvider을 등록

필자는 Feature 나 사용자 정의 Contextresolver를 사용하여이 작업을 수행하는 방법을 보았지만 소스 코드에서 작성한 Mapper에 추가하는 방법을 알고 있지만 REST 서비스가 사용하는 Mapper에는 추가 할 수 없습니다.

classes.add(ObjectMapperContextResolver.class); 

classes.add(MarshallingFeature.class); 

JAX-RS 2.0 앱이 이러한 클래스를 무시하기 때문에.

JAX-RS 응용 프로그램에 Feature 또는 ContextResolver를 어떻게 추가하여 인식 할 수 있습니까?

답변

0

Jersey 구현 사용자 정의 응용 프로그램을 재사용 할 수 있습니다. More Info 그리고 ContextResolver를 사용하여 사용할 사용자 정의 ObjectMapper를 가져옵니다.

예 :

public class MyApplication extends ResourceConfig { 
    public MyApplication() { 
     /* packages that contains JAX-RS components, registers them to use also */ 
     packages("org.foo.rest;org.bar.rest"); 
     /* here register the provider */ 
     register(MapperProvider.class); 
} 

}

MapperProvider 클래스입니다.

@Provider 
public class MapperProvider implements ContextResolver<ObjectMapper> { 

@Override 
public ObjectMapper getContext(Class<?> arg0) { 
    /* you can configure the mapper as you like */ 
    return new ObjectMapper() 
      .registerModule(new JaxbAnnotationModule() 
      .configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false)); 
}