65.9K
CodeProject 正在变化。 阅读更多。
Home

在 Java 5 中消费 Web 服务

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.25/5 (14投票s)

2006年10月3日

CPOL

2分钟阅读

viewsIcon

262555

downloadIcon

3880

本文介绍了如何在 Java 5 中消费 Web 服务(在 Java 中创建代理类从未如此简单!)。

Code working from Eclipse

引言

本文介绍了如何使用新的 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 日:初始帖子
© . All rights reserved.