cxf – 动态调用Web服务的简便方法(无需JDK或代理类)

cxf – 动态调用Web服务的简便方法(无需JDK或代理类),第1张

概述在 Python中,我可以轻松地使用Web服务: from suds.client import Clientclient = Client('http://www.example.org/MyService/wsdl/myservice.wsdl') #create clientresult = client.service.myWSMethod("Bubi", 15) #invoke m 在 Python中,我可以轻松地使用Web服务:

from suds.clIEnt import ClIEntclIEnt = ClIEnt('http://www.example.org/MyService/wsdl/myservice.wsdl') #create clIEntresult = clIEnt.service.myWSMethod("Bubi",15)  #invoke methodprint result    #print the result returned by the WS method

我想用Java达到这么简单的用法.

使用Axis或CXF,您必须创建一个Web服务客户端,即一个包复制所有Web服务方法的包,以便我们可以像使用普通方法一样调用它们.我们称之为代理类;通常它们是由wsdl2java工具生成的.

实用且用户友好.但是每当我添加/修改Web服务方法并且我想在客户端程序中使用它时,我需要重新生成代理类.

所以我找到了CXF DynamicclIEntFactory,这种技术避免了使用代理类:

import org.apache.cxf.endpoint.ClIEnt;import org.apache.cxf.endpoint.dynamic.DynamicclIEntFactory;//...//create clIEntDynamicclIEntFactory dcf = DynamicclIEntFactory.newInstance();ClIEnt clIEnt = dcf.createClIEnt("http://www.example.org/MyService/wsdl/myservice.wsdl");//invoke methodObject[] res = clIEnt.invoke("myWSMethod","Bubi");//print the resultSystem.out.println("Response:\n" + res[0]);

但不幸的是,它创建并编译代理类运行时,因此在生产机器上需要JDK.我必须避免这种情况,或者至少我不能依赖它.

我的问题:

是否有另一种方法可以在Java中以动态方式调用Web服务的任何方法,而无需在运行时使用JDK并且不生成“静态”代理类?也许有一个不同的图书馆?谢谢!

解决方法 我知道这是一个非常古老的问题,但如果你仍然感兴趣,你可以使用soap-ws github项目: https://github.com/reficio/soap-ws

这里有一个非常简单的示例用法:

Wsdl wsdl = Wsdl.parse("http://www.webservicex.net/CurrencyConvertor.asmx?WSDL");SoapBuilder builder = wsdl.binding()    .localPart("CurrencyConvertorSoap")    .find();SoapOperation operation = builder.operation()    .soapAction("http://www.webserviceX.NET/ConversionRate")    .find();Request request = builder.buildinputMessage(operation)SoapClIEnt clIEnt = SoapClIEnt.builder()    .endpointUrl("http://www.webservicex.net/CurrencyConvertor.asmx")    .build();String response = clIEnt.post(request);

你可以看到它非常简单.

总结

以上是内存溢出为你收集整理的cxf – 动态调用Web服务的简便方法(无需JDK或代理类)全部内容,希望文章能够帮你解决cxf – 动态调用Web服务的简便方法(无需JDK或代理类)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1054470.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存