开始之前

关于本系列

此系列教程演示如何使用 Java SE 6 创建可轻松地从命令行而不是从 Web 应用程序服务器容器中运行的独立 Web Services 服务端和客户端应用程序。使用简单的 Hello World 示例,您将利用 Eclipse IDE、Java SE 6 和 Apache Ant 轻松创建完全可以正常工作的 Web Services 服务端和客户端应用程序。您还将使用 TCP/IP Monitor 检查服务器与客户端之间的通信流量,并使用 Eclipse Web Services Explorer 工具测试 Web Services 。

关于本教程

本教程是该系列的第 1 部分,将向您介绍如何使用 Eclipse IDE、Java SE 6 和 Ant 发布 Web Services 应用程序。本教程为第 2 部分奠定了基础,第 2 部分将描述 Web Services 客户端应用程序的创建。

目标

完成本教程后,您应该知道:

  • 什么是 Web Services ,以及它使用的与从 Eclipse 中用于查看已发布的 Web Services 描述语言(Web Services Description Language,WSDL)文件的浏览器相关的标准是什么。
  • 如何创建 Web Services 的服务器端,包括如何安装和配置 Eclipse IDE 和 Java Development Kit (JDK),以便它们协同工作以生成使用 Java SE 6 来编译的代码。
  • 如何在 Eclipse IDE 中使用基于 Ant Java 的构建工具来运行特殊 Java 命令以生成代码的某些部分。

先决条件

本教程包括为具备一些 Java 语言和 Ant 构建的实际应用知识的初级和中级 Java 程序员编写的简单步骤。初学者到更高级的 Java 开发人员将获得一些知识:学会如何构建、部署和运行独立 Web Services 服务端和分布式客户端,以提供防火墙友好的远程通信和应用程序处理。

系统要求

要按照示例进行操作,您需要下载:

您不必下载 Ant,因为其功能与 Eclipse 打包在一起。本教程使用 Ganymede Package for the Eclipse IDE for Java EE Developers。

设置开发环境

安装 Java SE 6

  1. 下载并安装最新的 Java SE 6 JDK。Java SE 6 具有许多新功能,包括 Web Services API。
  2. 双击可执行文件并按照安装说明进行操作。建议您执行典型安装并保留所有缺省设置,例如位置。
  3. 当系统询问时,请选择您是否希望将该 Java 运行时环境安装为系统 JVM,以及是否希望将任何浏览器与该 Java 插件相关联。
  4. 单击 Finish 开始安装。
  5. 关闭任何打开的浏览器窗口。
  6. 完成安装后,您应该看到一条确认安装成功的感谢消息。单击 OK 关闭该消息。

注意:将 Java Runtime Environment (JRE) 安装为系统 Java 虚拟机(Java Virtual Machine,JVM)意味着它将取代在 Microsoft® Windows® 目录中找到的任何 JVM,或在未从该目录找到 JVM 的情况下复制新的副本。将任何浏览器与 Java 插件关联意味着将这个新的 Java 版本用于 Applet。

安装 Eclipse

Eclipse 是一个开放源代码、可扩展的开发平台,可以在几乎所有的操作系统上进行安装。(了解有关 Eclipse 的更多信息。)

安装 Eclipse 是相当简单的,因为不存在安装过程:

  • 下载 Eclipse IDE for Java EE Developers
  • 将文件提取到计算机上的所需位置。然后您应该看到一个名为 eclipse 的文件夹。为方便起见,最好在桌面上创建 eclipse.exe 文件的快捷方式。

配置 Eclipse

第一次运行 Eclipse 时,将会显示欢迎页面,如图 1 所示。如果不想阅读概述和其他产品信息,只需关闭该页面,以后可以通过选择 Help > Welcome 返回到该页面。

图 1. 欢迎屏幕
Eclipse 欢迎页面

配置 Eclipse 以使用您先前安装的 Java SE 6 JDK;您需要将项目与此版本的 Java 相关联:

  1. 选择 Window > Preferences > Java > Installed JREs,然后单击 Add 按钮。
  2. 输入名称,例如 Java SE 6,以便于识别其版本。
  3. 单击 Browse 按钮,并定位到安装 JRE 60 的目录。
  4. 单击 OK(请参见图 2)。
    图 2. 添加新的 JRE
    添加新的 JRE
    新的 JRE 现在应该出现在已安装的 JRE 列表中,如图 3 所示。
  5. 选中 Java SE 6 复选框,然后单击 OK
    图 3. 选择新的 JRE
    选择新的 JRE
  6. 若要设置对所安装的 Java 版本的遵从性,请选择 Window > Preferences > Java > Compiler
  7. 从 Compiler compliance level 下拉列表中选择 1.6,如图 4 所示。
    图 4. 设置遵从性
    设置遵从性

创建项目

下一步,您将创建一个项目来构造 Web Services 服务端。项目包含源代码和其他相关文件,并允许您使用项目作为源文件的容器,或在项目中设置文件夹以对文件进行组织。

  1. 选择 File > New > Project
  2. 展开 Java 文件夹并单击 Java Project(请参见图 5)。
    图 5. 在 Eclipse 中创建项目
    在 Eclipse 中创建项目
  3. 单击 Next
  4. 在看到提示时输入项目名称,例如 wsServerExample,如图 6 所示。
    图 6. 在 Eclipse 中输入项目详细信息
    在 Eclipse 中输入项目详细信息
  5. 如果先前已缺省选择了 Use default JRE 单选按钮,则选择此单选按钮;否则请选择 Use a project specific JRE 单选按钮,并确保该 JRE 为 Java SE 6。
  6. 单击 Finish 将项目与您先前安装的 Java JDK 相关联。
  7. 如果提示您切换 Java 透视图,请单击 Yes

创建服务器

首先需要创建一个 Java 包来容纳您的 Java 类:

  1. 选择 File > New > Package
  2. 当 New Java Package 窗口打开时,输入包名称,例如 com.myfirst.wsServer,如图 7 所示。
    图 7. 创建包
    创建包

下一步,您需要为服务器代码创建一个类:

  1. 右键单击您刚才创建的包名称,然后选择 New > Class。按如图 8 所示对其进行配置。
    图 8. 创建类
    创建类
  2. 将该类创建为没有 main 方法存根的 public 类。

现在您已经为该包提供了一个类,下面可以开始编写服务器的代码了,如清单 1 所示。

清单 1. 服务器代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.myfirst.wsServer;
 
import Javax.jws.WebService;
 
@WebService
 
public class SayHello {
     
  private static final String SALUTATION = "Hello";
     
  public String getGreeting( String name ) {
   return SALUTATION + " " + name;
  }
}

请注意清单 1 中粗体显示的代码。这称为 Annotation 或元数据,由 Java SE 5 中引入的 Web Services 元数据规范 (Web Services Metadata Specification) 所使用。开发人员在对类和方法应用 Annotation 之前定义类和方法,以向运行时引擎指明如何将类及其方法作为 Web Services 和 Web Services 操作来启用。Java SE 6 附带了这样一个引擎。

@WebService Annotation 将 SayHello 类标记为实现某个 Web Services ,从而产生可部署的 Web Services 。这个特定的 Annotation 是一个 WSDL 映射 Annotation,并将 Java 源代码与表示 Web Services 的 WSDL 元素相关联。(有关 Java SE 6 中的其他 Annotation 的更多信息,请参阅参考资料。)

使用 Ant 生成服务器代码

编写服务器应用程序以后,您需要生成支持 Web Services 的代码。首先,创建一个名为 build.xml 的新 Ant 文件:

  1. 右键单击该项目,并选择 New > File
  2. 在得到提示时输入名称 build.xml,然后单击 Finish(请参见图 9)。
  3. 确保通过右键单击此文件并选择 Open With > Ant Editor,从而使用 Ant Editor 打开此文件。从现在开始,每当您双击此文件,都会使用 Ant Editor 将其打开。
    图 9. 创建 Ant 文件
    创建 Ant 文件
  4. 输入如清单 2 所示的 Ant 项目。
    清单 2. Ant 脚本
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    < project default = "wsgen" >
     
      < target name = "wsgen" >
       
       < exec executable = "wsgen" >
          
        < arg line = "-cp ./bin -keep -s ./src -d ./bin com.myfirst.wsServer.SayHello" />
          
       </ exec >
          
      </ target >
     
    </ project >
  5. 若要运行该 Ant build.xml 文件,请右键单击 Run As 并选择 Ant Build,这将会执行该 Ant 文件。
  6. 确保此操作在 Eclipse 控制台窗口中产生 BUILD SUCCESSFUL 消息,如图 10 所示。
    图 10. Ant 构建成功
    Ant 构建成功
  7. 返回到 Eclipse 项目,通过右键单击 wsServerExample 并选择 Refresh 来刷新该项目。您现在应该在名为 com.myfirst.wsServer.jaxws 的包下面看到生成用于运行所创建的 Web Services 的代码(请参见图 11)。
    图 11. 生成的代码
    生成的代码

发布 Web Services

在为 Web Services 的服务器生成代码以后,您需要发布该 Web Services 以便能够开始使用它:

  1. 在您创建的 com.myfirst.wsServer 包下面创建一个新类,并将其命名为类似于 RunService 的名称。
  2. 右键单击该包并选择 New > Class,但这次选择用于创建 main 方法存根的选项。
  3. 编写发布 Web Services 的代码,如清单 3 所示。 




    清单 3. 发布代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    package com.myfirst.wsServer;
     
    import Javax.xml.ws.Endpoint;
     
    public class RunService {
     
      /**
      * @param args
      */
         
      public static void main(String[] args) {
             
       System.out.println("SayHello Web Service started.");
       Endpoint.publish("http://localhost:8080/wsServerExample", new SayHello());
     
      }
    }

    Java SE 6 为发布 Web Services 提供了新的支持。Endpoint API 简单地发布 Web Services 端点,后者在运行时在某个 URL 处生成 WSDL。

  4. 通过右键单击此类并选择 Run As > Java Application,从而运行此类。Eclipse IDE 控制台窗口应该显示出来。如果未显示,请选择 Window > Show View > Console。您应该看到 Web 服务器已启动的指示,如图 12 所示。
    图 12. 正在运行服务的控制台
    正在运行服务的控制台

查看 WSDL

现在服务器已经启动并运行,您应该对其进行测试以确保它按预期工作:

  1. 通过选择 Window > Show View > Other > General > Internal Web Browser 打开 Eclipse 中的内部 Web 浏览器。
  2. 输入 URL,例如 http://localhost:8080/wsServerExample?wsdl,这应该会显示该 Web Services 的 WSDL 文本,如图 13 所示。 



    图 13. 显示内部 Web 浏览器的控制台
    显示内部 Web 浏览器的控制台
  3. 完成后,记住通过单击 Eclipse 控制台视图中的红色方框停止该 Web Services 。 然而,为了继续本教程后面的操作,应该保持服务处于运行状态。

测试服务器

下一步,您将使用 Eclipse Web Services Explorer 工具,并通过本机 WSDL 和 SOAP 调用 Web Services 的操作,以测试您刚才创建的 Web Services 的 getGreeting 方法。

  1. 您可能需要切换到 Java EE 透视图。单击 Window > Open Perspective > Other
  2. 当窗口显示出来时,选择 Java EE
  3. 选择 Run > Launch the Web Services Explorer。通过双击其选项卡最大化视图。您应该看到如图 14 所示的屏幕。 

    图 14. Web Services Explorer
    Web Services Explorer
  4. 单击红色圆圈所指示的图标。这将显示 WSDL 页面,如图 15 所示。
    图 15. WSDL 页面
    WSDL 页面
  5. 在 Navigator 窗格中,单击 WSDL Main。Actions 窗格已更新,如图 16 所示。
  6. 输入 WSDL URL,在此例中为 http://localhost:8081/wsServerExample?wsdl,然后单击 Go 按钮。
    图 16. 输入 WSDL URL
    输入 WSDL URL
  7. WSDL 应该成功地打开,并且您应该看到类似如图 17 所示的屏幕。
    图 17. 成功打开的 WSDL
    成功打开的 WSDL
  8. 下一步,您将通过单击 Operations 下面的 getGreeting 调用一个操作(如图 17 所示)。这将产生与图 18 所示类似的屏幕。
    图 18. 调用操作
    调用操作
  9. 在 Body 部分的 getGreeting 下面,单击 Add 链接(如图 18 所示)向值表中添加一个新行。
  10. 输入名称(这里为 Fiona),然后单击 Go 按钮。
  11. 在 Status 部分,getGreetingResponse 显示了结果。您应该在 Status 部分看到类似于 return (string): Hello Fiona 的结果(请参见图 19)。可能需要滚动或拖动视图才能看到结果。
    图 19. 操作结果
    操作结果

总结

创建、生成和发布 Web Services 是非常简单的,只需使用 Eclipse 即可,当然还要使用 Java SE 6。请继续阅读本系列教程的第 2 部分,您将在其中构建独立客户端以便与这个独立 Web Services 服务端一起使用。

附录:Web Services 术语和首字母缩写词简要概述

Web Services

根据 W3C 的定义,Web Services 是“旨在支持通过网络进行的可互操作计算机到计算机交互的软件系统”。换句话说,Web Services 是用于应用程序到应用程序通信的编程接口。通常,它们用作支持计算机之间通过网络(例如 Internet)进行通信的 Web 应用程序。

客户端和服务器使用遵循 SOAP 标准的 XML 消息进行通信。也就是说,Web Services 使用 XML 对数据进行编码和解码,并使用 SOAP 来通过开放协议传输数据。Web Services 平台的其中两个基本要素为 SOAP 和 WSDL。

XML

可扩展标记语言(Extensible Markup Language,XML)允许用户定义他们自己的元素。它是一种通用规范,可以促进结构化数据在不同信息系统之间的共享(通常通过网络)。XML 旨在携带信息而不是显示信息。换句话说,XML 除了对信息进行组织、存储和传输以外,并不实际做其他任何工作;它只是纯文本。

SOAP

SOAP 过去代表简单对象访问协议 (Simple Object Access Protocol),但是在 1.2 版中已经丢弃了这个概念,因为此概念太具有误导性了。它是一种轻量级的通信协议,允许应用程序使用 XML 通过网络交换信息,或者更简单地说就是用于访问 Web Services 的协议。SOAP 允许应用程序彼此通信,而不管它们运行在什么操作系统上,以及是使用什么编程语言编写的。

WSDL

WSDL 是应用程序可读的 Web Services 描述语言。它用于描述 Web Services 的功能,以及客户端应用程序应该如何调用 Web Services 。也就是说,它在 XML 文档中描述 Web Services 的所有方法及其签名、命名空间,以及统一资源标识符(Uniform Resource Identifier,URI)的处理。URI 指定网络上的某个资源。

相关主题
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐