CXF如何在没有Spring的情况下在CXF端口上设置SoapVersion

ree*_*eef 8 java configuration cxf jax-ws

我目前正在使用没有Spring配置文件的CXF的Web服务客户端.

它工作得很好,但我无法弄清楚如何使用Java Api设置绑定SoapVersion.使用Spring文件,如下所示:

<jaxws:binding>
    <soap:soapBinding version="1.2"/>
</jaxws:binding>
Run Code Online (Sandbox Code Playgroud)

你们知道如何在Java代码中执行此操作(在端口上,在SOAPBinding上...)?

在此先感谢您的帮助!

编辑 - - - - - - - - - - -

我仍然坚持这个问题...我试图在接口上添加SOAPBinding注释,如下面的响应之一所示,但它不起作用...我仍然在寻找一种手动配置我的方法使用Soap 1.2的PortType/Binding/Bus ...

有任何想法吗?

编辑 - - - - - - - - - - -

问题解决了!其实我回答了我自己的问题:见下文......

谢谢!

ree*_*eef 13

好的,我再次回答我自己的问题,分享解决方案.在CXF邮件列表的帮助下,我发现了一个适合我的解决方案.实际上有两种方法可以解决这个问题.这是解释:

问题来自我构建CXF服务的方式.

第一个解决方案是在服务创建时指定WSDL位置:

// Create the service
Service service = Service.create(urlToWsdl, serviceQName);
// Access the port
return service.getPort(serviceQName, portTypeClass);
Run Code Online (Sandbox Code Playgroud)

这解决了这个问题但是我不希望有这个链接到WSDL,所以这里是摆脱这个链接的第二个解决方案:

// Create the service
Service service = Service.create(serviceQName);
// Add a Port to the service and specify the SOAP 1.2 binding
service.addPort(serviceQName, javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING, wsUrl);
// Access the port
return service.getPort(serviceQName, portTypeClass);
Run Code Online (Sandbox Code Playgroud)

在我的项目中,我们决定选择第二种解决方案.

希望这可以帮助!


Dan*_*ulp 6

最简单的可能只是在以下界面上添加注释:

@BindingType(SOAPBinding.SOAP12HTTP_BINDING)
Run Code Online (Sandbox Code Playgroud)