2016-10-20 10 views
0

私はSOAP受信要求を受け付けるws受信ゲートウェイ構成を持っています。私はSoapEndpointInterceptorを同じものに設定しました。 MessageEndPointInterceptor.handleRequest()メソッドでSOAPヘッダースプリング統合の追加

<int-ws:inbound-gateway id="inboundWsGateway" request-channel="requestChannel" mapped-request-headers="*" reply-channel="responseChannel" error-channel="errorChannel" /> 

<bean class="org.springframework.ws.server.endpoint.mapping.UriEndpointMapping">  
<property name="defaultEndpoint" ref="inboundWsGateway"/> 
<property name="interceptors"> 
<array> 
<ref bean="messageEndpointInterceptor"/> 
</array> 

</property> 
は、私は、着信SOAP要求は任意の石鹸を持っていないので、新たな要素

public boolean handleRequest(final MessageContext messageContext, final Object endpoint) { 
final SoapMessage soapRequestMessage = (SoapMessage) messageContext.getRequest(); 
final SoapHeaderElement soapHeaderElement = soapRequestMessage.getSoapHeader().addHeaderElement(qname); 
} 

をSOAPヘッダを取得し、追加しようとしています:ヘッダー、soapRequestMessage.getSoapHeader()はnullを返します。このシナリオを処理する方法を教えてください

+0

より多くの文脈を見る方が良いでしょう。いくつかのコード、私たちの側から再生するテストケース、設定などそれ以外の場合、それを把握し、修正を考え出すのは長い話になるでしょう。そして、あなたの質問があなたのために何の答えもなくここで閉じられる大きなチャンスがあります。ちょうどそれがひどく形成されているからです。それでおしまい。 –

答えて

0

シナリオが正しくありません。 あなたはリクエストを受け取りますので、あなたはそれをそのまま生きなければなりません。それは不変です、あなたはそれを変更することはできません。

その他の情報を提供するためのフックをいくつか考えてください。 MessageHeadersの後。<int-ws:inbound-gateway>の後。

あなたがメッセージのオーナーである場合にのみ、新しいSoapHeaderElementを追加できます。 SoapMessageFactoryを直接使用する場合、またはWebServiseメッセージを送信する場合。

あなたのインバウンドメッセージの変更はsacrilege :)のように見えます。

関連する問題