如何创建具有动态端点的 CXF Web 服务客户端?

发布于 2024-12-05 09:06:48 字数 126 浏览 0 评论 0原文

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

We have a central WSDL file that describes a web service. We use CXF to generate client code, but this code seems to be bound to 1 endpoint. How can i create a CXF client that uses the WSDL, but where I can specify the endpoint? Is there are way in changing the endpoint to a URL that implements the same WSD:?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

亚希 2024-12-12 09:06:48

如果其他服务实现相同的WSDL,那么当您创建MyClientService对象时,您可以将新服务的WSDL的URL传递给构造函数,构造函数就会使用它。大多数服务都会在 ?wsdl 上公开其 wsdl,因此使用它可能“正常工作”。

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

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

其中 proxyMyClientService 对象。

If the other service implements the same WSDL, when you create the MyClientService object, you can pass the URL to the new service's WSDL right to the constructor and it will us it. Most services would expose its wsdl on ?wsdl so using that may "just work".

Alternatively, you can override the endpoint URL via:

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

where proxy is the MyClientService object.

久而酒知 2024-12-12 09:06:48

在 CXF 2.6.1 中工作

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

Working in cxf 2.6.1

Client client = ClientProxy.getClient(port);
client.getRequestContext().put(Message.ENDPOINT_ADDRESS, "http://some-valid-endpoint") ;
蛮可爱 2024-12-12 09:06:48

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

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();

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

you can use JaxWsProxyFactoryBean for dynamically calling a service

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();

factory.setServiceClass(ChangeStudentDetails.class);
factory.setAddress("http://localhost:8081/CXFTutorial/ChangeStudent");
心凉怎暖 2024-12-12 09:06:48

javax.xml.ws.WebServiceException:找不到 wsdl:Web 方法 XXXX 的绑定操作信息。
在 org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:125)
在 com.sun.proxy.$Proxy82.getUser(来源未知)

如果发生此错误,则将注释 Webservice 添加到已经在服务端开发的客户端接口。

我遇到了这个问题,我已经用CXF配置了Spring。我已经开发了该服务并从客户端调用它。

希望这会有所帮助。

javax.xml.ws.WebServiceException: Could not find wsdl:binding operation info for web method XXXX.
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:125)
at com.sun.proxy.$Proxy82.getUser(Unknown Source)

If this error occurred then add annotation Webservice to your client side interface which is already developed on service side.

I faced this issue, I have configured Spring with CXF. I have already developed the service and calling it from client.

Hope this will help.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文