使用cxf开发 webservice的时候,因为cxf只支持 1.1 的消息,但是自己的服务调用别人的服务往往需要采用别人的协议版本,如果别人的webservice 服务的实现使用的是 1.2 的协议,那么这时候存在以下几种解决方案。
1 在webservice接口或实现处定义 SOAP12 的协议
这种方案实现的前提是你能看到并修改别人定义的代码。
@WebService
@BindingType(value = SOAPBinding.SOAP12HTTP_BINDING)
public class ConvergaFileUploadServiceImpl implements FileUploadService {}
2 使用 SOAPHandler 来处理消息
这种方案的策略是将发送过来的消息从11转为12 ,但是有个前提,这种转法只支持 jdk
@Bean("documentUploadServiceJaxwsClient2")
@Lazy
public JaxWsPortProxyFactoryBean jaxWsPortProxyFactoryBean2() {
JaxWsPortProxyFactoryBean jaxWsPortProxyFactoryBean = new JaxWsPortProxyFactoryBean();
jaxWsPortProxyFactoryBean.setServiceInterface(org.tempuri.IDocumentUploadService.class);
jaxWsPortProxyFactoryBean.setNamespaceUri("http://tempuri.org/");