2014-11-24 4 views
4

모든 JAX-RS/리소스에서 @Produces 주석을 기본값으로 적용하는 방법은 응용 프로그램 차원에서 제공됩니까?JAX-RS default @Produces

웹 서비스를 생성하는 많은 수업이 있습니다. 그 중 하나 하나에 @Produces({"application/json", "application/xml"})을 넣는 대신, 나는 중앙에서 그것을하고 싶습니다. 그렇게하면 모든 클래스를 수정하지 않고 한 곳에서 미래의 제작자를 추가 할 수 있습니다.

현재 Resteasy with Jetty를 사용하고 있습니다.

+0

아니, 불행하게도 없다. 올바른 미디어 유형을 생성하는 단일 MessageBodyWriter를 갖는 방법이있을 수 있습니다. 다른 방법은 경로 ("/")에 매핑 된 루트 JAX-RS 클래스를 사용하여 원하는 유형을 생성하는 것입니다 – stringy05

답변

0

답변을 찾았습니다. 상위/리소스 클래스를 만들고 @Produces 주석을 추가 한 다음 실제 리소스에 대해 하위 클래스로 만듭니다. 잘 작동합니다.

1

조금 오래된 질문이지만 다른 사람에게 유용 할 수 있습니다. ccleve의 솔루션에 추가로 인터페이스도 사용할 수 있습니다. 다중 상속 때문에 인터페이스를 통해 여러 미디어 유형을 결합 할 수 있습니다. 예 :

@Produces(MediaType.APPLICATION_JSON) 
@Consumes(MediaType.APPLICATION_JSON) 
public interface IJsonResource { 
} 

@Produces(MediaType.APPLICATION_XML) 
@Consumes(MediaType.APPLICATION_XML) 
public interface IXmlResource { 
} 

는 그런 다음 콘크리트 JAX-RS 자원 클래스 :

public class SomeJaxRsResource implements IJsonResource, IXmlResource { 
... 
} 
관련 문제