2016-10-20 46 views
0

我有一个ws入站网关配置,它接受肥皂请求。我已经为相同的配置了一个SoapEndpointInterceptor。添加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> 

在MessageEndPointInterceptor.handleRequest()方法

,我试图让肥皂头和添加新的元件

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

您的情况是不正确的。 您收到请求,因此您必须照原样处理。它是不可变的,你不能修改它。

考虑一些其他的钩子来提供额外的信息,例如, <int-ws:inbound-gateway>之后的MessageHeaders

仅当您是邮件的所有者时,您才可以添加新的SoapHeaderElement,例如,如果您直接使用SoapMessageFactory,或者发送WebServise消息。

您的入站邮件修改看起来像sacrilege :)。