我目前正在使用不带 Spring 配置文件的 CXF 开发 Web 服务客户端。
它工作得很好,但我不知道如何使用 Java Api 设置绑定(bind) SoapVersion。 使用 Spring 文件按以下方式完成:
<jaxws:binding>
<soap:soapBinding version="1.2"/>
</jaxws:binding>
你们知道如何在 Java 代码中(在 Port 上,在 SOAPBinding 上...)做到这一点吗?
预先感谢您的帮助!
编辑------------------------
我仍然被这个问题困住了...... 我尝试按照以下响应之一的建议在界面上添加 SOAPBinding 注释,但它没有用...... 我仍在寻找一种方法来手动配置我的 PortType/Binding/Bus 以使用 Soap 1.2...
有什么想法吗?
编辑------------------------
问题解决了!实际上我回答了我自己的问题:见下文...
谢谢!
最佳答案
好的,我再次回答我自己的问题以分享解决方案。 在 CXF 邮件列表的帮助下,我找到了适合我的解决方案。 实际上有两种方法可以解决这个问题。 解释如下:
问题出在我构建 CXF 服务的方式上。
第一个解决方案是在服务创建时指定 WSDL 位置:
// Create the service
Service service = Service.create(urlToWsdl, serviceQName);
// Access the port
return service.getPort(serviceQName, portTypeClass);
这解决了问题,但我不想拥有指向 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);
在我的项目中,我们决定选择第二种解决方案。
希望这对您有所帮助!
关于java - CXF 如何在没有 Spring 的情况下在 CXF 端口上设置 SoapVersion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4248098/