在 Java 5 中消费 Web 服务






4.25/5 (14投票s)
本文介绍了如何在 Java 5 中消费 Web 服务(在 Java 中创建代理类从未如此简单!)。
引言
本文介绍了如何使用新的 JAX-WS 2.0 API (JSR 228) 在 Java 1.5.0 中使用 Web 服务。
世界各地的开发人员,包括我,一直抱怨在 Java 中使用 Web 服务,即使是像加两个数字这样简单的 Web 服务,也存在困难。
然而,随着 JAX-WS 2.0 API 现在在 JDK 1.5.0 的核心 Java 中可用,生活变得前所未有的简单。
本文介绍了如何使用此 API 以获得最大收益,使用一些现成的工具,类似于 Microsoft 在 .NET Framework 中提供的 wsdl.exe,用于生成代理类。
在开始讨论之前,对于初学者可能需要一些词汇背景。 以下是所用术语的简单定义
- Web 服务:在未知环境中运行的远程应用程序上可用的操作/任务
- SOAP:两个未知应用程序将互相通信的语言
- 消息:使用 SOAP 作为语言通过线路传输的内容
- WSDL:将定义 SOAP 确切语法的语言
- 代理类:客户端机器上可用的代码片段,它将执行连接到服务器并处理序列化和反序列化的任务
使用 ASP.NET 发布 Web 服务
对于我们的例子,我们将使用 ASP.NET 发布 Web 服务。 您可以查看全球其他文章,了解如何使用 ASP.NET 发布 Web 服务。
以下是 Web 服务的概要
Name: BasicWebServices
Namespace: http://www.edujinionline.com/ns/ws/samples/dn/S01BasicServices/
Operation: Add
Input Message: AddMessage
Output Message: AddMessageResponse
AddMessage: Two parameters, x and y, of type double
AddMessageResponse: One parameter, AddMessageResult, of type double
在 Java 1.5 中使用 JAX-WS 2.0 使用 Web 服务
从 此处 下载 JAX-WS 参考实现。 使用上面文档的安装部分中描述的步骤提取文件。
深入研究 bin 文件夹,其中将有一个名为 wsimport
的实用程序。 是的! 所有使用过 .NET Framework 中的 wsdl.exe 的人都会立即明白该工具的用途。
除了各种其他选项外,该工具支持的重要选项是
-p pkg
:将生成源文件的包的名称-s src-directory
:源文件将保存到的目录的路径-d directory
:二进制文件将保存到的目录的路径
在控制台中,发出以下命令(全部在一行中)
wsimport
–p com.edujinionline.tutorials.services
–s src
–d bin
https:///BasicWebServices.asmx?WSDL
最后一个参数是 WSDL 文件的位置。 是的,它与 HTTP 传输配合得非常好。
现在… 现在,什么? 代理类可用了。 您将找到以下生成的类
BasicWebServices
BasicWebServicesSoap
AddMessage
AddMessageResponse
ObjectFactory
... 并且这些是准备使用的代理类。 请参阅下面的代码以进行演示。
public class BasicWebServicesClient
{
public static double testAdd(double x, double y)
{
double retVal = 0;
BasicWebServices service = new BasicWebServices();
BasicWebServicesSoap soap = service.getBasicWebServicesSoap();
ObjectFactory factory = new ObjectFactory();
AddMessage request = factory.createAddMessage();
request.setX(x);
request.setY(y);
AddMessageResponse response = soap.add(request);
retVal = response.getAddMessageResult();
return retVal;
}
}
以及使用上面描述的包装方法 testAdd
的 main 方法
public class MainClass
{
public static void main(String[] args)
{
double x = 34.56;
double y = 45.67;
double z = BasicWebServicesClient.testAdd(x, y);
System.out.printf("%f + %f = %f", x, y, z);
}
}
摘要
现在,在 Java 中使用 Web 服务只需要两个步骤。 第一步是创建代理类。 第二步是继续使用它们。
历史
- 2006 年 10 月 3 日:初始帖子