2016-06-30 10 views
1

Ich verwende ws: Outbound-Gateway Sofe Service aufrufen. Ich habe auch Abfangjäger hinzugefügt.ws: Outbound-Gateway benutzerdefinierten Interceptor mit Nachrichtenheader

<int-ws:outbound-gateway id="wsOutboundGateway" 
     request-channel="requestChannel" 
     uri="{soapURI}" 
     message-sender="httpMessageSender" 
     message-factory="messageFactory" 
     interceptor="myInterceptor" 
     marshaller="jaxbMarshaller" unmarshaller="jaxbMarshaller"> 
     <int-ws:uri-variable name="soapURI" expression="headers.soapURI"/> 
    </int-ws:outbound-gateway> 

myInterceptor ist eine Klasse, die ClientInterceptor implementiert.

Frage: Ich habe die Informationen in Nachrichtenkopf, die abgefangen werden müssen. Gibt es eine Möglichkeit, den Nachrichtenkopf im Interceptor zu empfangen?

Hinweis: Ich setze den Header-Wert im lokalen Thread und jetzt zurück in den Interceptor.

Jede bessere Lösung, bitte vorschlagen.

Antwort

1

Es hängt von der Prämisse und dem Kontext ab.

Sorry, aber Sie müssen mehr Informationen teilen. Was ist der Header? Was machst du damit? Vielleicht gibt es keine Notwendigkeit, es in der ClientInterceptor abzufangen, aber wäre besser noch vor <int-ws:outbound-gateway>?

UPDATE

Ich habe die Informationen in Nachrichten-Header, wo ich es in den Seifen Header übergeben.

Eigentlich ClientInterceptor ist vollständig für verschiedene Zwecke und ihre Absicht nicht die Nachricht zu ändern.

Es gibt WebServiceMessageCallback Abstraktion für Nachrichtenänderung vor dem Senden.

Aber mit Ihren Anforderungen wie übergeben SOAP-Header kann ich Ihnen vorschlagen, Blick in Out-of-the-Box-Komponente wie DefaultSoapHeaderMapper. Sein populateStandardHeaders Deal nur mit SoapAction und populateUserDefinedHeader füllt nur als soapHeader.addAttribute(). Betrachten Sie daher eine Erweiterung dieser Klasse, um benutzerdefinierte Tags in soapHeader einzufügen. Und schon ohne ThreadLocal Hacks.

+0

Ich habe die Informationen in Nachrichtenkopf, wo ich es in der Soap-Header übergeben muss. –

+0

Bitte werfen Sie einen Blick auf eine Bearbeitung meiner Antwort. –

+0

Danke für Ihren Vorschlag .. Ich werde DefaultSoapHeaderMapper erweitern und den Soap-Header übergeben. –

Verwandte Themen