我们有一个描述Web服务的中央WSDL文件。我们使用CXF生成客户端代码,但此代码似乎绑定到1个端点。如何创建使用WSDL的CXF客户端,但我可以在哪里指定端点?是否有办法将端点更改为实现相同WSD的URL:?
答案 0 :(得分:9)
如果other
服务实现了相同的WSDL,那么在创建MyClientService
对象时,可以将URL传递给新服务的WSDL权限,然后将它传递给构造函数。大多数服务都会将其wsdl暴露在?wsdl上,因此使用它可能“正常工作”。
或者,您可以通过以下方式覆盖端点URL:
((BindingProvider)proxy).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_URL, "http://my.service.url.com/...")
其中proxy
是MyClientService
对象。
答案 1 :(得分:4)
使用cxf 2.6.1
Client client = ClientProxy.getClient(port);
client.getRequestContext().put(Message.ENDPOINT_ADDRESS, "http://some-valid-endpoint") ;
答案 2 :(得分:1)
您可以使用 JaxWsProxyFactoryBean 动态调用服务
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(ChangeStudentDetails.class);
factory.setAddress("http://localhost:8081/CXFTutorial/ChangeStudent");
答案 3 :(得分:1)
javax.xml.ws.WebServiceException:无法找到Web方法XXXX的wsdl:binding操作信息。
在org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:125)
在com.sun.proxy。$ Proxy82.getUser(未知来源)
如果发生此错误,请将注释Webservice添加到已在服务端开发的客户端界面。
我遇到了这个问题,我已经使用CXF配置了Spring。我已经开发了该服务并从客户端调用它。
希望这会有所帮助。