Ich baue einen Web-Service mit Java und Spring-ws. Es funktioniert gut, bis auf eine Sache.Nicht entkommen Zeichen im Frühjahr WS SOAP Körper
Wenn ich die Payload assemblieren, die in den SOAP-Body eingefügt werden soll, möchte ich CDATA-Escape-Strings einfügen. Dies ist, wie ich das Ergebnis aussehen soll wie:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:_0="http://example.com/ns">
<soapenv:Header/>
<soapenv:Body>
<_0:Message>
<_0:StringPayload><![CDATA[<myxml>stuff</myxml>]]></_0:StringPayload>
</_0:Message>
</soapenv:Body>
</soapenv:Envelope>
jedoch Frühlings-WS scheint mit der Nutzlast zu manipulieren, wenn es den SOAP-Umschlag erstellt. Dies ist das Ergebnis, das ich bekommen:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:_0="http://example.com/ns">
<soapenv:Header/>
<soapenv:Body>
<_0:Message>
<_0:StringPayload><myxml>stuff</myxml></StringPayload>
</_0:Message>
</soapenv:Body>
</soapenv:Envelope>
Gibt es eine Möglichkeit, um sicherzustellen, Frühling WS keine XML-Escape-Zeichen und die CDATA-Tag respektieren?
Ich benutze Spring WS zusammen mit Apache Camel, daher wäre eine Lösung, bei der ich die Spring-ws Klassen nicht ändern/erweitern muss, vorzuziehen.
Welche Implementierung von 'org.springframework.ws.soap.SoapMessageFactory' verwenden Sie (axiom? Saaj?)? Was 'org.springframework.ws.server.endpoint.adapter.method.MethodReturnValueHandler' benutzt du (marshalling, jaxb, castor,' AbstractPayloadSourceMethodProcessor')? –
Warum? Für einen XML-Parser und Web-Service-Stack sind diese beiden gleichwertig. –
@GrzegorzGrzybek Die Nachricht ist vom Typ SAAJ. Ich bin mir nicht sicher, welcher MethodReturnValueHandler verwendet wird, aber ich denke, das wird JAXB sein. –