Java SpringWS:如何将WebserviceTemplate与预生成的SOAP信封一起使用

Java SpringWS:如何将WebserviceTemplate与预生成的SOAP信封一起使用,java,web-services,spring,ws-security,spring-ws,Java,Web Services,Spring,Ws Security,Spring Ws,您可以使用SpringWSWebServiceTemplate来调用webservice并避免它生成SOAP信封吗?也就是说,消息已经包含一个SOAP信封,我不希望WebserviceTemplate将另一个信封包裹起来。:-) 我希望这样做的原因是,我想调用一个使用ws-security的Web服务,不想将ws-security内容放入WebserviceTemplate,只想在SOAP信封中为它提供一条带有预生成的ws-security信息的消息。我尝试用一个已经包含WS-Security内

您可以使用SpringWSWebServiceTemplate来调用webservice并避免它生成SOAP信封吗?也就是说,消息已经包含一个SOAP信封,我不希望WebserviceTemplate将另一个信封包裹起来。:-)


我希望这样做的原因是,我想调用一个使用ws-security的Web服务,不想将ws-security内容放入WebserviceTemplate,只想在SOAP信封中为它提供一条带有预生成的ws-security信息的消息。我尝试用一个已经包含WS-Security内容的Soap信封的源调用该方法,而webservice模板将另一个Soap信封包裹起来,从而销毁消息。

拦截器对于您尝试执行的这类操作非常有用。请在此处查看拦截器层次结构:
您可以向spring ws注册EndpointInterceptor,并根据自己的喜好操作响应。

您以一种奇怪的方式使用ws-security。。。我猜您正试图通过使用预生成的消息来避免ws-security依赖性,因为简单的客户端可能是有意义的,尽管这绝对不是书上说的

通过将WebServiceTemplate上的messageFactory设置为以下bean,可以将WebServiceTemplate配置为使用无SOAP的纯XML:

<bean id="webServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
    <property name="messageFactory" ref="poxMessageFactory" />
</bean>    

<bean id="poxMessageFactory" class="org.springframework.ws.pox.dom.DomPoxMessageFactory" />


是的,但我的观点是:我根本不想操纵请求和响应!我如何避免Webservice模板对它做任何事情?我的问题是,它将另一个Soap信封包裹在现有的信封上。你不能这样做。webservice模板是以SOAP为中心的——它假定您希望将响应封装在SOAP信封中。但在您的情况下,您似乎已经在soap信封中找到了您的响应。