2012-05-03 15 views
7

Ich habe einen Anwendungsfall, bei dem alle Aufrufe von NewWebService an OldWebService weitergeleitet werden müssen, wenn die SOAP-Anforderung nicht mit XSD und WSDL von NewWebService validiert wird. NewWebService befindet sich auf ServerA und OldWebService befindet sich auf ServerB.SOAP-Webdienstanforderungen an einen anderen Webdienst weiterleiten/weiterleiten

Zusammenfassend weiß ich, dass ich einen Mechanismus brauche, der es mir ermöglicht, eine SOAP-Anfrage zu machen, die NewWebService trifft, an OldWebService sendet und dann das SOAP-Ergebnis zurück an den Client sendet. Meine begrenzte Erfahrung mit Spring-ws macht es schwierig zu entscheiden, wie dies zu erreichen ist.

Mein erster Gedanke war, einen SOAP-Client in den NewWebService zu erstellen, der den OldWebService aufruft, wenn die Nutzdaten nicht validiert werden können. Ist dies die beste Lösung, oder gibt es eine bessere Möglichkeit, den NewWebService als Pass-Through für bestimmte Anfragen zu verwenden?

+0

Es gibt eine Option, um Anfragen mit WS-Addressing.Refer auf [http://static.springsource.org/spring-ws/sites/2.0/reference/html/server.html#server -ws-addressing –

Antwort

5

Meine Lösung bestand darin, einen benutzerdefinierten SoapRequestFilter zu schreiben, der einen javax.servlet.Filter und eine neue Klasse implementiert, die HttpServletRequestWrapper erweitert. Da HttpServletRequestWrapper die HttpServletRequest-Schnittstelle implementiert, können Sie durch das Erweitern des Wrappers die HttpRequest-Funktion kopieren und auf den Stream zugreifen, ohne das Objekt zu verbrauchen und Probleme stromabwärts zu verursachen.

Sobald ich den Filter und Wrapper hatte, konnte ich den Endpunkt und die Nutzlast von der HttpRequest analysieren. Wenn die Anforderung umgeleitet werden musste, habe ich eine neue HttpUrlConnection für den alten SOAP WebService erstellt und den InputStream von dieser Antwort auf den OutputStream der HttpResponse gesetzt.

+6

Haben Sie diesen Code irgendwo geteilt? Ich wäre an Ihrer Implementierung interessiert. – youdonotexist

Verwandte Themen