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
ich immer noch die Ausnahme erhalten. MessageBodyWriter nicht gefunden. – Mike
@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
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