如何在 Jersey 2.x 中注册 MessageBodyWriter 和 MessageBodyReader

Mik*_*ike 5 java xml jersey

我正在使用jerseyapi实现 RESTful 服务,我知道我需要注册自定义 xmlWriter 和 xmlReader。客户端代码实现了 MessageBodyWriter,我需要知道如何在服务器端注册它,因为我正在获取MessageBodyProviderNotFoundException媒体类型应用程序/xml。

MessageBodyWriter 代码

public class SendDocumentsServiceRequestXMLWriter extends BaseMessageBodyWriter implements MessageBodyWriter<SendDocumentsRequest> {

public boolean isWriteable( Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType ) {
    return type == SendDocumentsRequest.class && !mediaType.isWildcardType() 
            && !mediaType.isWildcardSubtype() && mediaType.isCompatible( MediaType.valueOf( "application/xml" ) );
}

public long getSize( SendDocumentsRequest t, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType ) {
    return 0;
}

public void writeTo( SendDocumentsRequest t, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType,
    MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream ) throws IOException, WebApplicationException {
    try {
        ESignatureClientJAXBContextFactory.getMarshaller( SendDocumentsRequest.class ).marshal( t, entityStream );
    } catch (Exception e) {
        throw new ESignatureClientException( e );
    }
}
Run Code Online (Sandbox Code Playgroud)

}

我如何注册这个课程,以便 Jersey 选择它?

谢谢

Ram*_*lfc 4

与 Writer 或 Reader 一起或取决于 Writer 或 Reader放置@Provider您的实现类。@Produces@Consumes

这是一个例子: http: //memorynotfound.com/jax-rs-messagebodywriter/