2017-03-28 3 views
1

Ich implementiere RESTful Dienste mit jersey API und ich weiß, dass ich die benutzerdefinierte XmlWriter und XMLReader registrieren muss. Client-Code implementiert MessageBodyWriter und ich muss ho0w wissen, um es auf der Serverseite zu registrieren, weil ich MessageBodyProviderNotFoundException für Medientyp application/xml bekomme.Wie man MessageBodyWriter und MessageBodyReader in Jersey registrieren 2.x

MessageBodyWriter Code

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); 
    } 
} 

}

Wie kann ich diese Klasse registrieren, damit Jersey es nimmt?

Dank

Antwort

1

setzen @Provider auf Ihre Implementierungsklasse zusammen mit @Produces oder @Consumes auf Writer oder Reader abhängig.

Hier ist ein Beispiel: http://memorynotfound.com/jax-rs-messagebodywriter/

+0

ich immer noch die Ausnahme erhalten. MessageBodyWriter nicht gefunden. – Mike

+0

@Mike Wie haben Sie Ihr Projekt konfiguriert, ich meine, was Container und Abhängigkeiten und verwenden Sie web.xml, um Ihre Ruheanwendung oder Unterklasse "Anwendung" und die Verwendung von "@ ApplicationPath" zu konfigurieren. – Ramanlfc

+0

Ich habe alles eingerichtet. In web.xml habe ich das Trikot-Container-Servlet und die Pakete bekommen. Die einzige Sache ist, dass es den MessageBodyWriter nicht finden kann. – Mike

Verwandte Themen