IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  SOA and Web services  >

创建、部署、发布和使用一个简单的 Web 服务

Speed-start Web services 简介

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

Ron Ben-Natan (rbennata@hotmail.com), 首席顾问, Robin Lissak Associates

2003 年 7 月 01 日

本文从头至尾地介绍了使用 WebSphere Studio 和 WebSphere Application Server 进行 Web 服务开发的整个生命周期。我们将一个由六行代码构成的简单 Java 类包装成一个 Web 服务,然后将其发布到 IBM UDDI 业务测试注册中心(Business Test Registry),这个类报告服务器的系统时钟。本文包含将 Web 服务发布到 Speed-start 社区集合(Community Collection)的具体指示信息,Speed-start 社区集合是 IBM UDDI 业务测试注册中心的附属部分,它是为 IBM Speed-start Web services 计划的参与者提供的。(请参阅参考资料部分以了解如何访问测试注册中心和社区集合。)

本文向您介绍构建和部署的整个过程,包括:

  • 使用 WebSphere Studio 开发简单的 Java 类
  • 使用 WebSphere Studio 将 Java 代码包装成 Web 服务
  • 使用 WebSphere Studio 将 Web 服务和 Java 代码打包成企业应用程序
  • 将 Web 服务和 Java 代码部署到可从公众因特网访问的 Application Server 上
  • 使用 WebSphere Studio 将服务发布到 IBM UDDI 业务测试注册中心上的 Speed-start 社区集合。
  • 使用 WebSphere Studio 发现并导入在 IBM UDDI 业务测试注册中心上的 Speed-start 社区集合发布的服务。

本文假定您使用的 WebSphere Studio 和 Application Server 的版本均为 5.0。如果您运行的是 WebSphere Application Server V4.0,那么您需要确保您打包的企业应用程序符合 J2EE 1.2(标题为 创建 Ear的一节中对此有更详细的介绍)。如果您运行的是 WebSphere Studio V5.0(与 V5.0.1 不同),那么您将需要升级至 5.0.1 或采用一个附加的手工操作步骤。标题为 您运行的是 WebSphere Studio V5.0.1 吗?这一节介绍了详细的信息。

实现服务

您首先将创建一个新的项目和一个类,这个类将实现一个简单的服务:返回服务运行所在服务器的系统日期和时间。这允许一个远程调用者获取该服务器的日期/时间。

创建新的 Web 项目


要创建新的 Web 项目,请从菜单栏选择 File > New > Project。这就打开了 New Project 向导。在左边窗格中选择 Web,在右边窗格中选择 Web Project,然后单击 Next按钮。这将打开向导中的下一个对话框(如 图 1所示),您将在其中定义 Web 项目。将项目名设置为 ServerClock(或您自己使用的名称),然后单击 Finish按钮。您可以通过单击 Next按钮,指定将在新的企业应用程序项目中使用该项目,也可以以后将该项目手工添加到企业项目中。


ServerClock 项目

创建 RemoteServerClock 类


现在,您需要构建 RemoteServerClock 类。这个类实现返回服务器日期/时间的服务。

在包资源管理器(Package Explorer)中,在 ServerClock 文件夹上单击鼠标右键,然后选择 New > Class。这就打开了 Java Class 对话框,它允许您创建新的 Java 类。输入包名和类名,如 图 2所示。


ServerClock 类

现在,您需要编写这个类的代码,它是一个返回单个字符串的非常简单的方法:

package edu.wsspeedstart;
public class RemoteServerClock {
  public String getServerClock() {
    return java.util.Calendar.getInstance().getTime().toString();
  }
}





回页首


创建 Web 服务

既然有了将日期/时间作为字符串返回的方法,就可以把它包装成一个 Web 服务。

选择项目和类


从菜单栏选择 File > New > Other。这就打开了一个对话框,在左边窗格中选择 Web Services,然后在右边窗格中选择 Web Service。单击 Next按钮,转至向导的下一页。选择 Java Bean Web Service 作为 Web 服务类型,并且选中复选框以生成 Java 代理,以便可以在 WebSphere Studio 测试环境中测试 Web 服务。单击 Next按钮转至向导的下一步。保留 Web 服务部署环境选择中的 Use Defaults 选项,确保选中了 ServerClock Web 项目。单击 Next 按钮转至向导的下一步。在向导的下一个屏中,会让您选择要以 Web 服务公开的类。选择 RemoteServerClock ,然后单击 Next按钮(请参阅 图 3)。


Java 类

在这个阶段,您已经指定了要将哪个功能包装成 Web 服务;单击 Next按钮以设置 URN。

设置服务 URN


服务 URN 唯一地标识服务。因为您正在为现有的一段代码( RemoteServerClock 类)构建 Web 服务包装器,所以需要告诉服务器如何将唯一的服务标识符映射至实现类;运行时将用它标识在收到请求时执行服务的类。

图 4 所示,将 Web service URI 域设置成 urn:RemoteServerClock ,将 Scope 设置成 Session。单击 Finish按钮。


服务 URN




回页首


构建代理和测试客户机

在将 Web 服务部署到 Application Server 之前,应在 WebSphere Studio 内测试代码。这很容易做到,因为 WebSphere Studio 会自动生成一个代理和一个简单的客户机应用程序。代理是一个 Java 类,它包装一个 code 对象,将 URN 放入该对象,然后调用请求。在服务器端,URN 被抽取出来并用来查找应接收该请求的类。所有这些都是在服务器端通过一个名为 RPC 路由器的特殊 servlet 完成的,该 servlet 是 Application Server 运行时的一部分。通信路径如 图 5所示。


代理和 RPC 路由器

客户机是一个简单的 JavaServer Page(JSP)页,它使用代理调用服务器(在本例中,代理和服务器都驻留在 WebSphere Studio 内)。测试应用程序有三个窗格。在左边窗格中,选择希望调用的 Web 服务方法。单击 getServerClock() 。右上方的窗格就会包含与服务输入参数(本例中无输入参数)相匹配的表单。单击 Invoke按钮。右下方的窗格显示服务的输出 — 运行应用程序的机器的日期/时间。如果您打开了控制台窗格,您将看到 Application Server 发出的各种日志消息,如 图 6所示。


测试客户机




回页首


将应用程序打包以进行部署

既然您的服务正在运行,您就可以进一步将其打包,以把它部署成 Application Server 内的一个企业应用程序。

修改 WSDL


首先要做的是修改 WSDL,以便要发现您服务的客户机能在 Application Server 实例中找到它,而不是在缺省设置的本地主机中找到,只有在 WebSphere Studio 的 WebSphere 测试环境中运行时后一种情况才起作用。服务接口文件(RemoteServerClockService.wsdl)包括有关服务及 WSDL 文件所驻留位置的地址信息。当 WebSphere Studio 生成这些文件时,它将这些位置指向测试环境。例如,SOAP 地址元素看起来如下所示(假定测试环境在端口 9080 侦听):


<soap:addresslocation="http://localhost:9080/ServerClock/servlet/rpcrouter"/>

这对测试您的代码有用,但一旦您要着手部署应用程序,则应当修改地址信息。如果您要部署到一个名为 xxx.yyy.zzz 的可从因特网访问的节点(端口为 ppp ),那么将每个 localhost:9080 实例改成 xxx.yyy.zzz:ppp ,如在端口 80 部署,则改成 xxx.yyy.zzz


为了将 Web 服务作为 EAR 部署,需要将该服务包含在企业应用程序中。使用 File菜单选择 New > Project...,然后在左边窗格中选择 J2EE,在右边窗格中选择 Enterprise Application Project。单击 Next按钮。然后选择是希望创建 J2EE 1.2 应用程序,还是希望创建 J2EE 1.3 应用程序。如果您将在 WebSphere Application Server V4.0 上部署,您应当使用 J2EE 1.2。如果您使用的是 WebSphere Application Server V5.0,则可以两者任选其一,但选择 J2EE 1.3 更合适。单击 Next按钮,转至向导的下一步,在其中设置企业应用程序名称。取消选择任何其它模块,因为您将手工添加 Web 项目 — 您的屏幕看起来应当如 图 7所示,然后您可以单击 Finish按钮来创建企业应用程序。


企业应用程序

添加 WAR


在导航窗格中打开 enterprise application project。第一项是 Application Deployment Descriptor。双击部署描述符(deployment descriptor),以便在右上方的编辑窗格中打开它。右上方是该企业应用程序内所有模块的列表;这个列表是空的,因为该企业应用程序还只是一个空壳。单击 Details按钮,在模块编辑器中,单击模块列表正下方的 Add...按钮。从列表中选择 ServerClock 模块,然后单击 Finish按钮。现在,模块列表看起来应当如 图 8所示。


Web 项目

保存应用程序部署描述符以便导出企业应用程序。

导出 EAR


最后一步是将应用程序打包成 EAR。通过从菜单栏选择 Project > Rebuild All,最后一次重新构建项目。

在 Navigator 窗格中,在企业应用程序项目上单击鼠标右键,然后选择 Export。然后从向导的列表中选择 EAR File。选择文件要导出的目录,然后单击 Finish按钮。WebSphere Studio 将创建带嵌入式 WAR 文件的 EAR 文件,WAR 文件包括所有特定于 Web 服务的信息以及实现代码。





回页首


在 WebSphere Application Server 上部署

既然您已经创建了 EAR 文件,就可以进一步在应用程序服务器上安装企业应用程序。

启动管理员控制台


要部署应用程序和 Web 服务,可使用 WebSphere 管理员控制台(WebSphere Administrator Console)。确保 Application Server 正在运行,如果没有,则启动 HTTP 服务器和 WebSphere Application Server。

通过将浏览器导航至 http://localhost:9090/admin ,打开管理员控制台。输入用户标识,然后单击 OK按钮。

安装企业应用程序 — 指定 EAR


使用左边的 Navigator 窗格,转至 Applications > Install New Application。输入 EAR 文件的路径,或使用 Browse按钮找到它。因为正在部署 EAR 文件,所以不需要指定任何其它内容 — 所有的应用程序属性都嵌入在 EAR 中。向导应当和 图 9相似。单击 Next按钮。


Ear 文件

部署 Web 模块


因为 EAR 包含 Web 模块,所以您需要指定应该在哪台虚拟主机上部署它。Application Installation 向导中的下一个窗口让您指定虚拟主机。保留 default_host 值,然后单击 Next按钮。如果您不想修改缺省部署参数,则再次单击 Next。将所有 Web 模块映射至缺省主机,如 图 10所示,然后单击 Next按钮。


Web 模块

完成企业应用程序的安装


在向导的下一步(请参阅 图 11)中,选择将要部署 Web 模块的单元和服务器,然后单击 Next


ServerClock 模块

最后,确认所有的应用程序细节都是正确的,然后单击 Finish按钮。应用程序将得以安装 — 这可能要花一些时间,请耐心等待。如果一切顺利,您将在屏幕上看到一组打印输出,其形式如下:

ADMA5005I: Application ServerClockEA configured in WebSphere repository 
ADMA5001I: Application binaries saved in f:\\Program
   Files\\WebSphere\\AppServer\\wstemp\\admin\\workspace\\cells\\rbn\\applications\\
   ServerClockEA.ear\\ServerClockEA.ear 
ADMA5011I: Cleanup of temp dir for app ServerClockEA done. 
ADMA5013I: Application ServerClockEA installed successfully. 
        Application ServerClockEA installed successfully.
			
      

通过单击 Save to Master配置链接,然后单击 Save按钮,将更改保存到主配置中。现在,当您在 Navigator 窗格中单击 Enterprise Applications链接时,您应该能看到新的企业应用程序。

重新生成 Web 服务器插件


在启动 Web 服务之前,需要重新生成 Web 服务器插件。插件控制 Web 服务器和 Application Server 之间的通信。Web 服务器插件需要知道:必须将前缀为 ServerClock 的 URL 转发至 WebSphere Application Server。该插件通过使用以下格式的 URL 来访问服务: http://<hostname>/ServerClock/servlet/rpcrouter

最后,重新启动 Web 服务器和应用程序服务器。您的服务现在部署到了 Application Server 上,并且可以从因特网访问它。现在,通过将 Web 服务发布到 UDDI 注册中心,确保其他人知道它。





回页首


将 Web 服务发布到 UDDI 注册中心

既然您的 Web 服务已经部署到 Application Server,那么剩下的最后一步就是将该 Web 服务发布到 UDDI 测试注册中心; 您将需要使用一个特殊的类别以便在 Speed-start 计划下发布您的 Web 服务。但首先要做的是在测试注册中心获得一个注册的用户名。

在 IBM UDDI 业务测试注册中心上注册为用户


IBM UDDI 业务测试注册中心是一个公用的 UDDI 注册中心,它可以用来向公众注册企业和服务。它最常用于测试 Web 服务的发布和发现。

在向该注册中心发布 Web 服务之前,需要设置用户帐户。打开浏览器,导航至 https://uddi.ibm.com/testregistry/registry.html。然后单击 Get an IBM user ID and password链接。填写注册页;需要记住的最重要的值是标识和密码。确保电子邮件帐户拼写正确,因为您需要接收一封激活电子邮件。

在接受使用 UDDI 注册中心的许可证条款并完成注册之后,您将收到一封激活电子邮件,其标题为 IBM UDDI Registration Notice。单击该电子邮件中的链接以激活您的帐户。

您正在运行 WebSphere Studio V5.0.1 吗?


既然您有了测试注册中心的帐户,就可以继续下一步操作:在 UDDI 注册中心中发布刚在 Application Server 上安装的 Web 服务。您应当检查是否正在运行 WebSphere Studio V5.0.1;如果正在运行 V5.0,您将需要手工执行一个步骤,以便发布您的服务(请参阅 没有升级到 V5.0.1 时的特殊指示信息)。如果正在运行 V5.0 并且按正常的过程操作,您将在 UDDI 资源管理器中接收到一个异常信息,如 图 12所示,并且将不能发布服务。


异常

升级到 V5.0.1 就简单多了。只要您正在使用高速因特网连接,这就是一个简单的步骤。升级需要两个 PTF,大小总共为 240MB 左右,当您没有高速连接时,这样的大小才会成为问题。升级到 V5.0.1 很容易 — 只需遵循在 http://www3.software.ibm.com/ibmdl/pub/software/websphere/studiotools/html/501/wsad/install.html中提供的指示信息,这些信息显示了如何安装 5.0.1 PTF。

打开 Web 服务资源管理器


假定您正在使用 V5.0.1,要打开 Web 服务资源管理器(Services Explorer),请从菜单栏选择 File > Export。在 Export 向导中,选择 Web Service,然后单击 Next按钮(请参阅 图 13)。


Web 服务资源管理器

选中 Launch the Web Services Explorer框以将该 Web 服务发布到 UDDI 注册中心,并且确保 IBM UDDI 测试注册中心被选中;单击 Finish按钮以启动 Web 服务资源管理器。

发布企业


在将 Web 服务发布到 UDDI 注册中心之前,需要发布企业。在 Navigator 窗格(左边窗格)中,单击 IBM Test Registry链接。在 Actions 窗格(右上方窗格)的工具栏中,单击 Publish工具(请参阅 图 14)。


将企业发布到 UDDI 注册中心

确保在 Publish下拉菜单中选中 Business选项,输入注册时使用的用户标识和密码,以及要发布企业的名称/描述。单击 Go

在右下方的 Status 窗格中,您将看到企业已经成功发布。您现在应当添加一些标识,如电话号码、传真号码和联系人姓名等。单击 Add按钮以添加标识并填写域。您还应当添加该企业所属的类别(类似于黄页分类模式)。如果您的企业属于多个企业类别,您可以添加多个类别。完成后,使用 Go按钮提交表单。

发布服务


一旦您发布了企业,就可以继续下一步:发布服务本身。您应当还能浏览企业,如果不能,则使用左边的 Navigator 窗格以选择企业实体。在右上方窗格的 Actions 工具栏上,单击 Publish Business Service工具(请参阅 图 15)。


将服务发布到 UDDI 注册中心

输入指向您 WSDL 文件的 URL。 这是发布过程中最重要的部分,因为 WSDL 文件服务实现文件定义了服务端点

使用正确的分类


在发布服务之前,您需要指定服务的一个或多个名称、描述和分类。添加名称和描述以便人们能轻松地搜索您的服务。

注:除了要给服务标记的任何分类之外,您还需要给要在 Speed-start 社区集合中注册的服务添加一个特殊的类别。这是用 Speed-start 计划列出服务所必须完成的最后一步

如果您升级到 5.0.1,这项任务非常简单。在 Categories 部分中,添加一个类别并且选择 dWCommunity类型。然后单击 Browse...链接(请参阅 图 16)。


dWCommunity 类别

在如 图 17所示的弹出对话框中,选择 Speed Start选项。这一特殊类别将把 UDDI 测试注册中心中发布的服务归为 Speed Start 服务。


Speed Start 类别

没有升级到 5.0.1 时的特殊指示信息


如果您选择不升级至 V5.0.1, 不要 单击 Browse 按钮!而应手工输入 Speed Start 键值,然后发布服务。这将有同样的结果。





回页首


验证 Speed-start 发布

为了验证您的服务的确在测试资源库中,并且在 Speed-start 计划下是可查看的,请转至 Speed-start 社区集合(请参阅 参考资料一节)。您的服务应如 图 18所示。


新发布的 Speed-start 服务




回页首


发现并测试服务

既然您知道服务在注册中心上发布,让我们看看使用者如何能发现并使用该服务。

从菜单栏选择 File>Import以打开 Import 向导。选择 Web Service,然后单击 Next按钮。选中 Launch the Web Services Explorer 以从 UDDI 注册中心查找 Web 服务,并确保 IBM UDDI 测试注册中心被选中。单击 Finish按钮,用导入方式打开 Web 服务资源管理器。

在右上方窗格中单击 Find工具。


Find 工具

从下拉菜单选择 Businesses,并将 SpeedStartExample 作为您希望查找的企业名称,然后单击 Go


搜索

导入 WSDL


单击通过搜索检索到的企业。在 UDDI Navigator 窗格中展开查询结果项,然后セ?SpeedStartExample。单击 Get Services工具:


可用服务

因为您只发布了一个服务,所以将显示 RemoteServerClock 服务:


详细清单

单击 Get Service Interface工具,然后单击 Import WSDL to Workbench工具:


导入 WSDL

现在,您必须指定要导入 Web 服务的项目,然后单击 Go按钮。这将把 WSDL 文件导入到项目中。您现在就可以着手创建代理和样本测试应用程序了。

创建代理和测试应用程序


要创建代理和样本测试应用程序,请使用 WebSphere Studio 的 Web Services 向导。

从菜单栏选择 File>New>Other。在左边窗格中选择 Web Services,在右边窗格中选择 Web Service Client。从下拉菜单中选择 Java proxy,并且选中 Test the generated代理。单击 Next。输入 WSDL 绑定文档,然后单击 Finish

这将生成代理和测试应用程序,并在 WebSphere Studio 中启动该应用程序供您使用,如下所示。请注意:测试应用程序(有一组样本 JSP)在 WebSphere Studio 内运行,但实际的事务则在(由 IBM 在因特网上部署的)Application Server 实例上执行。


样本测试客户机




回页首


结束语

本文向您介绍了开发、部署和发布 Web 服务的全过程,可以在社区集合(社区集合作为 Web 服务 Speed-start 计划的一部分被管理)中访问该 Web 服务。您了解了如何开发简单的 Java 服务,如何将其包装成 Web 服务,如何在 WebSphere Application Server 实例上部署它,如何使用适当的分类将其发布到 IBM 业务测试注册中心,然后如何发现并导入该服务 — 全部都用 WebSphere Studio 和 WebSphere Application Server 完成。



参考资料

在下面获取有关本文所利用或引用的技术的资料:

  • 您可以参阅本文在 developerWorks 全球站点上的 英文原文.

  • 下载WebSphere Application Server V5 的试用版。

  • 下载WebSphere Studio 的试用版。

  • 获取UDDI 业务测试注册中心的用户标识。


关于作者

Ron Ben-Natan 是 Studio B的作家,Robin Lissak Associates 的首席顾问,这是一家帮助财富 500 强公司实现企业门户解决方案的公司。在这之前,他曾在 Intel、AT&T Bell Laboratories、Merrill Lynch 和 J.P. Morgan 这样的公司工作过。他拥有计算机科学专业的博士学位,研究方向是分布式计算,他从事分布式应用程序的架构设计和开发工作已超过 15 年。他的业余爱好是写文章讨论如何运用技术来解决实际问题,他写过很多书,包括由 Osborne/McGraw 出版的“IBM WebSphere Application Server: The Complete Reference”。可以通过 rbennata@hotmail.com与他联系。




对本文的评价










回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款