4

您可以使用 Spring-WS WebserviceTemplate 来调用 Web 服务并避免它生成 SOAP 信封吗?也就是说,该消息已经包含一个 SOAP 信封,我不希望 WebserviceTemplate 将另一个包裹在它周围。:-)

我想要这个的原因是我想调用一个使用 ws-security 的 web 服务,并且不想将 ws-security 的东西放入 WebserviceTemplate,而只是想用预先生成的 ws-security 向它提供一条消息SOAP 信封中的信息。我尝试使用 Source 调用方法sendSourceAndReceiveToResult已经包含带有 WS-Security 内容的 Soap-Envelope,并且 Web 服务模板环绕另一个 Soap-Envelope 并因此破坏了消息。

4

2 回答 2

4

您正在以一种奇怪的方式使用 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" />
于 2009-01-06T07:58:55.107 回答
0

拦截器可以为您尝试做的事情派上用场。在此处查看拦截器层次结构:http: //static.springframework.org/spring-ws/docs/1.0-m1/api/org/springframework/ws/EndpointInterceptor.html 您可以使用 spring-ws 注册 EndpointInterceptor 和操纵你喜欢的反应。

于 2008-12-13T03:17:56.640 回答