繁体   English   中英

如何使用动态端点创建CXF Web服务客户端?

[英]How to create a CXF webservice client with dynamic endpoint?

我们有一个描述Web服务的中央WSDL文件。 我们使用CXF生成客户端代码,但此代码似乎绑定到1个端点。 如何创建使用WSDL的CXF客户端,但我可以在哪里指定端点? 是否有办法将端点更改为实现相同WSD的URL:?

如果other服务实现了相同的WSDL,那么在创建MyClientService对象时,可以将URL传递给新服务的WSDL权限,然后将它传递给构造函数。 大多数服务都会将其wsdl暴露在?wsdl上,因此使用它可能“正常工作”。

或者,您可以通过以下方式覆盖端点URL:

((BindingProvider)proxy).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_URL, "http://my.service.url.com/...")

其中proxyMyClientService对象。

在cxf 2.6.1中工作

Client client = ClientProxy.getClient(port);
client.getRequestContext().put(Message.ENDPOINT_ADDRESS, "http://some-valid-endpoint") ;

您可以使用JaxWsProxyFactoryBean动态调用服务

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();

factory.setServiceClass(ChangeStudentDetails.class);
factory.setAddress("http://localhost:8081/CXFTutorial/ChangeStudent");

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。 我已经开发了该服务并从客户端调用它。

希望这会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM