Spring-WS: как использовать WebserviceTemplate с предварительно сгенерированным SOAP-конвертом - PullRequest
3 голосов
/ 11 декабря 2008

Можете ли вы использовать Spring-WS WebserviceTemplate для вызова веб-сервиса и избежать, чтобы он генерировал SOAP-конверт? То есть, сообщение уже содержит конверт SOAP, и я не хочу, чтобы WebserviceTemplate обернул вокруг него еще один. : -)

Причина, по которой я хочу это, заключается в том, что я хотел бы вызвать веб-сервис, который использует ws-security и не хочет помещать материал ws-security в WebserviceTemplate, а просто хочет передать ему сообщение с предварительно сгенерированным Информация ws-security в SOAP-конверте. Я попытался вызвать метод sendSourceAndReceiveToResult с источником, который уже содержит Soap-Envelope с материалом WS-Security, а шаблон веб-сервиса оборачивается вокруг другого Soap-Envelope и таким образом уничтожает сообщение.

Ответы [ 2 ]

3 голосов
/ 06 января 2009

Вы используете ws-security странным образом ... Я предполагаю, что вы пытаетесь избежать зависимости от ws-security, используя предварительно сгенерированные сообщения - для простого клиента может иметь смысл, хотя это определенно не книги.

Вы можете настроить WebServiceTemplate для использования обычного XML без SOAP, установив messageFactory на WebServiceTemplate для этого компонента:

<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" />
0 голосов
/ 13 декабря 2008

Перехватчики могут пригодиться для того, что вы пытаетесь сделать. Взгляните на иерархию перехватчиков здесь: http://static.springframework.org/spring-ws/docs/1.0-m1/api/org/springframework/ws/EndpointInterceptor.html Вы можете зарегистрировать EndpointInterceptor в spring-ws и манипулировать ответом по своему вкусу.

...