独立的java webservice客户端

时间:2010-09-08 10:02:10

标签: java web-services soap wsdl

我是webservices的新手。我正在尝试编写一个Java独立客户端,它可以从Web服务获得响应。

我尝试搜索SO和谷歌,但现在我更加困惑。以下是我经历过的广泛链接。

我有一个网址:http://api.something.com/remote/wsdl/SomeEncryptedText

我还有一个SOAP请求:

<?xml version="1.0" encoding="utf-8"?> 
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> 
<soap12:Body> 
<AuthUsername>someName@someWhere.com</AuthUsername> 
<AuthPassword>mypassword</AuthPassword> 
<Sid>12121</Sid> 
<DynamicProductFeedsRequest xmlns="http://api.something.com/remote/SomeEncryptedText"> 
</DynamicProductFeedsRequest> 
</soap12:Body> 
</soap12:Envelope> 

有了这个,我如何编写一个独立的Java客户端,我想在稍后阶段与某些Web应用程序集成?

从前面提到的资源看,有很多软件选择:SoapUI,WSDL2Java,Apache Axis,Maven插件,JAX-WS,Apache CXF。

我在上面提到的一个SO答案中使用了http://www.soapclient.com/soaptest.html,我可以在浏览器上获得一个完美的html / xml文件。

现在我很困惑我应该使用哪个软件?由于我对SOA一无所知,因此链接中的信息几乎没有相关内容,因此我无法相互关联。

有谁能告诉我编写独立Java客户端的高级步骤,该客户端接收WSDL URL和SOAP请求并为其提供输出?

如果我错过任何信息,请告诉我。

1 个答案:

答案 0 :(得分:10)

这个问题都取决于以下几点:

  • Java编译器的JDK版本。
  • 您的WSDL版本(有1.0,1.2和2.0)。

基本上,如果您使用Java annotations生成Web服务,那么您将需要与Java 5相关的Web服务库(支持注释)。

有关使用Java Web Services with annotation(JAX-WS)的一些文章:

我将从使用Java生成Web服务客户端开始,不支持支持注释。生成WSDL到Java的众所周知的客户端是Apache Axis(最后一个版本是2006年4月22日发布的1.4)。这基本上采用WSDL定义并将其生成回客户端。如果您使用较新版本的WSDL(1.2和2.0),它支持旧版本的WSDL(1.0)并崩溃。

这基本上做了什么,它需要您的WSDL并生成与您的Web服务通信的Java代理。它可以允许基于RPC和基于XML的通信。

对于支持注释的Java,实际上有两种方法可以做到这一点:

  • 使用Java自己的 wsimport 命令(可执行文件位于JDK_HOME/bin/文件夹下)。
  • 使用第三方库,例如Apache Axis 2(有效取代Apache Axis并支持WSDL版本2.0)或Apache CXF(支持最高1.2的WSDL)。

要使用wsimport,您基本上需要转到shell命令(或编写脚本)并有效地执行此操作:

wsimport -d [outputdir] wsdl_file

,您的java代理将在[outputdir]文件夹中找到。

在JDK 1.6中找到了

wsimport(我不知道它是否存在于早期版本中)。更多来源herehere

对于Apache Axis,Apache Axis 2或Apache CXF,有一个WSDL2Java类文件可以生成源代码。

以下是有关如何在Apache CXFApache Axis 2中使用WSDL2Java的指南。

我希望这会以某种方式帮助你,就像我在工作中花30分钟一样。 : - )