Spring-ws apache Camel with soap version 1.2



我使用的是spring-ws-apache-cacamel,默认情况下它支持soap 1.1。但我想发布一个将其绑定到soap 1.2的请求,因为我的端点服务只支持soap 1.2。我尝试在applicationContext.xml 中设置消息工厂,如下所示

<bean id="soapMessageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory">               <property name="soapVersion">                   
<util:constant static-field="org.springframework.ws.soap.SoapVersion.SOAP_12"/>               
</property>                        
</bean> 

然后将其添加到RouteBuilder中,.to("spring-ws:https://"+url+"?soapAction=#xxxx&wsAddressingAction=#xxx&messageFactory=#soapMessageFactory

但它不起作用。有没有其他方法可以在spring-ws组件中设置soap版本?我没有访问Web服务的权限。

感谢

我遇到了类似的情况,并采取了稍微不同的方法来解决问题。我创建了一个自定义的WebServiceTemplate,并将我的消息工厂附加到它上。然后,我在RouteBuilder中指定了WebServiceTemplate作为调用的一部分。这是代码:

@Bean
public WebServiceTemplate webServiceTemplate() throws Exception {
final MessageFactory msgFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
final SaajSoapMessageFactory messageFactory = new SaajSoapMessageFactory(msgFactory);
final WebServiceTemplate webServiceTemplate = new WebServiceTemplate(messageFactory);
return webServiceTemplate;
}

然后在我的路线上,我打了这样的电话:

.toD("spring-ws:{{some.service.url}}?webServiceTemplate=#webServiceTemplate&wsAddressingAction=http://test.org/SomeService/SomeOperation")

希望这能有所帮助。

相关内容

最新更新