我目前正在使用没有Spring配置文件的CXF的Web服务客户端。
它工作得很好,但我无法弄清楚如何使用Java Api设置绑定SoapVersion。 使用Spring文件,如下所示:
<jaxws:binding>
<soap:soapBinding version="1.2"/>
</jaxws:binding>
你们是否知道如何在Java代码中执行此操作(在端口上,在SOAPBinding上...)?
提前感谢您的帮助!
EDIT ----------------------
我仍然坚持这个问题...... 我尝试在接口上添加SOAPBinding注释,如下面的响应之一所示,但它不起作用... 我仍然在寻找一种方法来手动配置我的PortType / Binding / Bus以使用Soap 1.2 ...
有什么想法吗?
EDIT ----------------------
问题解决了!其实我回答了我自己的问题:见下文......
谢谢!
答案 0 :(得分:13)
好的我再次回答我自己的问题,分享解决方案。 在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);
在我的项目中,我们决定选择第二种解决方案。
希望这有帮助!
答案 1 :(得分:6)
最简单的可能只是在以下界面上添加注释:
@BindingType(SOAPBinding.SOAP12HTTP_BINDING)
答案 2 :(得分:2)
如果您使用的是cxf客户端,则可以使用以下方式。它也可以绑定多个wsdl。
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(WebServiceClass);
BindingConfiguration config = new BindingConfiguration() {
@Override
public String getBindingId() {
// TODO Auto-generated method stub
return "http://www.w3.org/2003/05/soap/bindings/HTTP/";//SOAPVersion.SOAP_12.httpBindingId
}
};
factory.setBindingConfig(config);
答案 3 :(得分:0)
根据Donal Fellows的建议,我回答了我自己的问题;)
实际上问题与服务器可以处理的Soap版本有关。 在客户端,我不需要指定我想使用Soap 1.2,似乎将WSDL文件中的PortType配置为Soap 1.2就足够了。 但是在服务器端我需要明确告诉我想要哪个Soap版本。 在服务器端,我仍然使用“Spring-mode”进行CXF配置,因此我在XML配置文件中添加了以下内容:
<jaxws:binding>
<soap:soapBinding version="1.2"/>
</jaxws:binding>
那是所有人! 感谢您的时间和帮助!
编辑--------------------------------
实际上这个解决方案现在无法联系我们不管理的服务器....我们仍然坚持我们的问题....
答案 4 :(得分:0)
旧线程。我以为我会发布一个对我有用的解决方案。
在cxf-beans.xml文件中,我从endpointName="tns:MR_ServerSoap12"
更改了endpointName="tns:MR_ServerSoap"
。请注意,端点名称在wsdl中将有自己的名称。使用该名称。