Meine CXF
bereitgestellt REST
Dienstleistungen für den üblichen Grund in die Regel javax.ws.rs.core.Response
zurückkehren, um das Ergebnis Entitätsdaten gemarshallte als XML und einen Return-Code zu kapseln:Wie Mars JAXBElement in Antwort?
@GET
@Path("/getPojo")
@Produces("application/xml")
public Response getPojo() {
SomePojo resultObj = ...;
Response result = Response.status(200).entity(resultObj).build();
return result;
}
, die erfordert, dass SomePojo
richtige Anmerkungen enthält:
@XmlRootElement(name = "somePojo")
@XmlAccessorType(XmlAccessType.FIELD)
public class SomePojo implements Serializable {
...
}
Ich stehe jedoch jetzt vor einem Szenario, in dem die Annotation Convention für mich nicht funktioniert und ich meine eigene JAXBElement
erstellen muss. Wie kann ich das benutzergenerierte JAXBElement in die Datei Response
einfügen, anstatt Response.ResponseBuilder.entity(resultObj)
zu verwenden, die auf der Annotationskonfiguration beruht? Ich marshalle etwas, das dem ähnlich ist, was erklärt wird here, aber er druckt gerade das gemarshallte XML in die Konsole und ich möchte es in die Antwort drucken (und nicht gerade HttpResponse
heraus).
Haben Sie marshall wollen und direkt auf die XML zurückgeben, oder Sie tun Möchten Sie CXF so konfigurieren, dass ein benutzerdefinierter Marshaller Ihre Ergebnisobjekte anwendet? – pedrofb
Ich bin nicht 100% sicher, dass ich die Frage verstehe, aber mein Bauchgefühl ist, mit dem ehemaligen zu gehen, Marshal selbst, aber ich würde immer noch 'Response' verwenden, weil ich sowohl einen Rückkehrcode + Objekt – amphibient