Весна-WS:как использовать WebserviceTemplate с предварительно созданным SOAP-конвертом
-
21-08-2019 - |
Вопрос
Можете ли вы использовать Spring-WS WebserviceTemplate для вызова веб-сервиса и избежать создания SOAP-конверта?То есть сообщение уже содержит SOAP-конверт, и я не хочу, чтобы WebserviceTemplate обертывал его другим.:-)
Причина, по которой я этого хочу, заключается в том, что я хотел бы вызвать веб-сервис, который использует ws-security, и не хочу помещать данные ws-security в WebserviceTemplate, а просто хочу передать ему сообщение с предварительно сгенерированным ws-security. информация в SOAP-конверте.Я попробовал вызвать метод ОтправитьSourceAndReceiveToResult с источником уже содержит Soap-Envelope с материалами WS-Security, а шаблон веб-сервиса оборачивается вокруг другого Soap-Envelope и, таким образом, уничтожает сообщение.
Решение
Вы используете ws-security странным образом...Я предполагаю, что вы пытаетесь избежать зависимости ws-security, используя предварительно сгенерированные сообщения - для простого клиента это может иметь смысл, хотя это определенно не по правилам.
Вы можете настроить WebServiceTemplate для использования простого XML без SOAP, установив messageFactory в WebServiceTemplate для этого bean-компонента:
<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" />
Другие советы
Перехватчики могут пригодиться для того, что вы пытаетесь сделать.Взгляните на иерархию перехватчиков здесь: http://static.springframework.org/spring-ws/docs/1.0-m1/api/org/springframework/ws/EndpointInterceptor.htmlВы можете зарегистрировать EndpointInterceptor с помощью Spring-WS и манипулировать ответом по своему вкусу.