[英]Simply consuming a web service in Java
我有一个非常简单的SOAP Web服务,需要从Java客户端使用。 不使用任何第三方库的最简单方法是什么? 要求是在每次调用ws之前从web.xml中读取主机和端口。
我可以向您推荐CXF库。 使用它,您将有几种选择来调用Web服务:
使用动态代理进行调用(无需使用wsdl2java制作Java存根)。
DynamicClientFactory dcf = DynamicClientFactory.newInstance(); Client client = dcf.createClient("http://admin:password@localhost:8080"+ "/services/MyService?wsdl"); Object[] a = client.invoke("test", ""); System.out.println(a);
使用从wsdl2java从WSDL生成的Java存根。
如果您的服务器是使用CXF创建的,则可以直接重用您的接口代码(而不是使用从您的接口创建的WSDL上的wsdl2java!)
对于#2和#3,以下代码示例了CXF用法:
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setAddress("http://admin:password@localhost:8080/services/MyService");
factory.setServiceClass(ITest.class);
ITest client = (ITest) factory.create();
client.test();
根据所使用的JAVA版本,一些内置的JAX-WS。 JDK 6具有Java的JAX-WS标准实现,您可以使用它。
请参阅以下内容:
JAX-WS Web服务入门 (使用JDK内置JAX-WS来部署和使用Web服务的教程)
如果您可以放宽对“没有第三方库”的要求,并且您拥有用于Web服务的WSDL,那么Axis可以使其变得非常简单。 只需使用wsdl2java编译WSDL,就可以使用生成的Java类来使用Web服务。
不使用任何第三方库? 真正了解SOAP标准并学习热爱SAX。
如果您不喜欢SAX,则放宽对无第三方库的要求,并使用StAX(带有woodstox)。
这种方法可能是“最简单的”(考虑到没有第三方库的要求),但是我认为这并不容易 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.