繁体   English   中英

只需使用Java即可使用Web服务

[英]Simply consuming a web service in Java

我有一个非常简单的SOAP Web服务,需要从Java客户端使用。 不使用任何第三方库的最简单方法是什么? 要求是在每次调用ws之前从web.xml中读取主机和端口。

我可以向您推荐CXF库。 使用它,您将有几种选择来调用Web服务:

  1. 使用动态代理进行调用(无需使用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); 
  2. 使用从wsdl2java从WSDL生成的Java存根。

  3. 如果您的服务器是使用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标准实现,您可以使用它。

请参阅以下内容:

如果您可以放宽对“没有第三方库”的要求,并且您拥有用于Web服务的WSDL,那么Axis可以使其变得非常简单。 只需使用wsdl2java编译WSDL,就可以使用生成的Java类来使用Web服务。

不使用任何第三方库? 真正了解SOAP标准并学习热爱SAX。

如果您不喜欢SAX,则放宽对无第三方库的要求,并使用StAX(带有woodstox)。

这种方法可能是“最简单的”(考虑到没有第三方库的要求),但是我认为这并不容易

暂无
暂无

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

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