级别: 初级 Greg Flurry (flurry@us.ibm.com), STSM, IBM's Emerging Technologies group, IBM Austin
2001 年 12 月 01 日 该系列教程将介绍如何利用IBM所提供的工具和技术来开发和部署基于 Web 服务的应用。文章着重介绍如何使用IBM WebSphere Studio Application Developer开发和测试 Web 服务和 Web 应用,如何在IBM WebSphere 应用服务器上部署开发好的 Web 服务,以及如何在IBM WebSphere UDDI注册中心中发布和寻找 Web 服务。
© 2001 国际商业机器有限公司。版权所有。
该系列教程将介绍如何利用IBM所提供的工具和技术来开发和部署基于 Web 服务的应用。文章着重介绍如何使用IBM WebSphere Studio Application Developer开发和测试 Web 服务和 Web 应用,如何在IBM WebSphere 应用服务器上部署开发好的 Web 服务,以及如何在IBM WebSphere UDDI注册中心中发布和寻找 Web 服务。
简介
该系列教程的
第一部分向我们展示了如何利用 WebSphere Studio Application Developer 来开发 Web 服务以及如何对 Web 服务进行单元测试。本文,也就是该系列教程的第二部分,将介绍如何利用 Application Developer 向 WebSphere UDDI 注册z中心预览版发布 Web 服务,使该 Web 服务能够为用户所利用。本文还说明了如何在 UDDI 注册中心中查找一个 Web 服务,以及利用Application Developer 创建已发布的 Web 服务的 client。
WebSphere Studio Application Developer
WebSphere Studio Application Developer 向应用程序开发人员提供了丰富的功能,其中包括 Web 应用程序的开发和测试、XML的开发和测试,以及 Web 服务的开发和测试(也是该系列教程的重点)。Application Developer 集成了UDDI Explorer,它是一个和遵循 UDDI 规范的注册中心进行交互的工具。这也是该系列教程的第二部分的重点。如果想了解关于 Application Developer 的更多信息,请参阅第一部分以及参考资料。
WebSphere UDDI 注册中心预览版
UDDI 注册中心一个遵循 UDDI 第一版的注册中心,应用于将 Web 服务部署在私有的企业内部网环境。UDDI 注册中心允许 Web 服务的开发人员在一个安全、私有的环境中发布和测试他们的内部电子商务应用。它支持 UDDI 第一版规范中所定义的20个基于 SOAp 的 ApI ,并且通过关系型数据库提供了对已发布的实体的持续性支持。UDDI 注册中心集成了一个基于 Web 的图形化用户界面,它支持对商务、服务以及其他遵循 UDDI 规范的实体的发布和查询,而无需编程。UDDI 注册中心运行于 WebSphere 应用服务器4.0版和 IBM 的 DB2 数据库之上。如果想了解有关如何获得 UDDI 注册中心的信息,请参阅
参考资料部分。
配置 Application Developer ,使它和 UDDI 注册中心协作
对于本文,Application Developer 和 UDDI 注册中心运行在同一台计算之上。如本系列教程第一部分所介绍的那样, 为了测试 Web 服务,Application Developer 集成了并且运行着一个 WebSphere 应用服务器4.0版自己的实例。请注意,这个“测试”版的 WebSphere 应用服务器4.0版在 Application Developer 之外是不可用的。正如上面说到的,UDDI 注册中心需要一个 WebSphere 应用服务器4.0版的“投产”安装版本。如果不存在,UDDI注册中心将会把它自动的安装上。
就像本文所作的那用,同时运行 UDDI 注册中心和在 Application Developer 中运行Web 服务将会产生资源的冲突,因为 WebSphere 应用服务器4.0版的这两个实例都将使用相同的一套 Ip 端口。幸好配置 Application Developer 的 WebSphere 测试环境以消除端口冲突的操作是相当简单的,只需编辑一下一个名为
server-cfg.xml 的 WebSphere 应用程序的配置文件即可。
改变端口信息的最简单的办法是打开 Application Developer 的Server perspective。
在“Server Configuration”视图中,展开
Server Configurations,然后在
WebSphere Administrative Domain上双击鼠标。
图1.Application Developer 的“Server Configuration”视图
这将启动一个服务器配置的编辑器。
在服务器配置编辑器中,单击
ports标签(在编辑器的最下端)。你将看到如下页面:
图2. 单击服务器配置编辑器的 ports 标签后,这个页面将会打开。用这个页面来改变端口号。
除了
Object level trace port,你需要修改所有的端口号。如果你是以默认地端口号(如果你通过 UDDI 注册中心安装流程进行安装)来安装 WebSphere 应用服务器4.0版的投产环境,你只要把其他地端口号加2。也就是说,把9000改为9002,把7000改为7002,把9070改为9072,把900改为902。如果你 WebSphere 应用服务器4.0版的投产环境具有不同的端口,你需要试验以下。保存了这些修改之后,关闭编辑器。这时,你就可以同时运行支持 UDDI 的 WebSphere 应用服务器4.0版投产环境和 Application Developer 的 WebSphere 应用服务器4.0版测试环境了。
利用 Application Developer 向 UDDI 注册中心发布 Web 服务
首先,我们将使用 Application Developer 的 UDDI explorer 发布第一部分中创建并测试好的 WeatherForecast Web 服务。发布于 UDDI 注册中心中的一个 WSDL( Web 服务描述语言) Web 服务的信息包括一个指向描述该 Web 服务的 WSDL 文档的索引(URL)。我们将 UDDI 注册中心的主机命名为 uddiHost,并将在 WSDL URL 指示的主机命名为 wsdlHost。WSDL 文档包含了真正调用这个 Web 服务的 client 所需要的信息(例如,
soap:address 元素的
location 属性)。我们将命名该 Web 服务的主机为 wsHost,命名使用 UDDI 注册中心或该 Web 服务的 client 主机为 clientHost。一般地,所有的这些主机都可以是不同的。
在本系列教程的第一部分,我们仅需要一个 wsHost 和一个 clientHost。Application Developer 的 WebSphere 测试环境提供了二者。对于发布 Web 服务,我们需要一个 clientHost、一个 uddiHost 和一个 wsdlHost。clientHost 就是 Application Developer UDDI explorer,uddiHost 就是 WebSphere 应用服务器4.0版的投产环境,而 wsdlHost 就是 WebSphere 应用服务器4.0版的测试环境。为了成功的发布 Web 服务,Application Developer、Application Developer 的 WebSphere 测试环境和 UDDI 注册中心都必须是运行的状态。
如果要发布 Web 服务,选择 Application Developer 的
Web perspective,选择
WForecast项目。 然后选择
File => Export。 在 “UDDI Import”页面, 点击
Finish,启动 UDDI explorer:
图3. UDDI explorer
在默认情况下,UDDI explorer 将使用可公开访问的 IBM 测试注册中心(请参阅下面的
参考资料部分),而我们希望 UDDI explorer 指向本地的 UDDI。
为了让 UDDI explorer 指向本地的 UDDI 注册中心,在 UDDI explorer 中的 UDDI 导航栏上选择
UDDI Main。Actions 栏中的内容将会改变为
Registry Name和
Inquiry URL的输入域。在名称域中输入本地的 UDDI 注册中心,在 URL 域中输入
http://localhost/services/uddi/inquiryApI,然后按
Go。explorer 将把这条本地 UDDI 注册中心加到导航栏的列表中。
现在,在导航栏中选择
Local UDDI Registry。你将看到 Actions 栏中的内容变为:
图4. UDDI explorer的 Actions 栏
如果你希望再次使用本地 UDDI 注册中心(本文即是如此),你可以利用 UDDI explorer 的 Favorites 功能记住这个设置。你可以通过选择
Add to Favorites(在操作栏中以
图标表示)把
Local UDDI Registry添加到收藏列表中。UDDI explorer 将会记住这个 UDDI 的信息,而你不必再次输入这些信息,如果以后用到,只需在导航栏中展开
Favorites即可。
由于所有的服务必须为一个 business 所拥有,所以在发布 WeatherForecast Web 服务之前,必须首先发布一个 business。 选择
publish Business Entity(在操作栏中以一个
图标表示)后,将有一个提示框让你输入发布的 URL,用户标识和密码。在 URL 中输入
http://localhost/services/uddi/publishApI,你可以用事先配置好的用户标识和密码分别作为 uddiUser 和 uddipwd。然后选择
Go,将会有一条消息说明“Login to registry Local UDDI Registry succeeded.”。
UDDI explorer 的 Actions 栏将会随之改变,让你输入关于 business 的信息:
图5. 改变之后的 UDDI explorer 的 Actions 栏。这时,你可以利用这个页面输入 business 的信息。
只有
Name域是必需的,其他的都是可选的。你可以在
Description域中输入一段描述性的文字。在 Identifiers 表中,可以点击
Add按钮向这个表中添加一行。你可以输入任何的信息,例如一个电话号码。确认你选中了你加入该分类的行的左边的复选框。
在
Categories表中,点击
Add按钮向表中添加一行,给 business 分类。为了把 business 分为天气相关的一类,在
Type下拉选单中选择
UNSpSC,然后点击
Browse按钮。一个新的提示窗口将让你在各种 UNSpSC 类别中进行选择。在这个例子中,选择
Meteorology是比较合理的,它又是
Research and Science-Based Services的子类。确认你选中了你加入该分类的行左边的复选框。
添加完所有的信息之后,点击
Go就把这个 business 实体加到注册中心中了。business 被发布以后,在 UDDI explorer 的Status 框中,会有一个确认信息说明该上也已经成功的发布了。
为了发布 WeatherForecast Web 服务,你需要首先在导航栏中展开
Local UDDI Registry。你会在那里发现刚刚被添加的 business 。选中它一后,操作栏的内容将会随之改变为这个服务的信息。点击
publish Business Service(在操作栏中以一个
图标表示)。
这是的操作栏将让你输入 WDSL 实现文件的位置,服务的描述和对服务的分类。点击 WSDL 域后面的
Browse按钮, UDDI explorer 将会弹出一个对话框,让你选择 Web project 和要发布的 Web 服务的 WSDL 文件 URL:
图6. UDDI explorer弹出的对话框,让你选择 Web project 和要发布的 Web 服务的 WSDL 文件 URL
请注意,UDDI explorer 将会自动的填如必须输入的 WSDL 实现文件的 URL, 因为这个文件是发布 WeatherForecast Web 服务所必需的(嵌入 Application Developer 的 WebSphere 应用服务器4.0版的实例一定要为 URL 的自动项而运行)。点击
Go,使这个 URL 加入到 UDDI explorer 的 Actions 栏中。
你也可以为这个服务输入一些说明性的文字:
图7. UDDI explorer 的 Actions 栏,已经填写了描述域
我们已经选择了气象学的一个子类作为这个服务的分类,还将这个服务划分为一个仅限于美国的服务。
点击
Go发布这个服务。如果这个服务被发布,你将会在 UDDI explorer 的状态栏中看到一个确认信息,说明服务的接口和服务已经被成功的发布了。
检查发布
虽然不是必需的,但是检查一下 business 和服务是否真的被发布到 UDDI 注册中心中是很有帮助的。用浏览器连接到
http://localhost/services/uddi/home.jsp,在菜单上点击
UDDI Login,当弹出提示框时,在 uddiUser 和 uddipwd 输入用户名称和密码。登录成功以后会显示出来一个由
UDDI User发布的服务的列表。该 UDDI 用户就是由用户名称 uddiUser 所代表的用户。你将会看到表中列出了 Weather Business 。在这个表中 Weather Business 行上,选中
Show Services列中的按钮,显示 Weather Business 的服务的标中将会列出
WeatherForecastService。
图8. WeatherForecastService 被列在 IBM UDDI 注册中心中
这让我们确信该 Web 服务已经成功的发布到 UDDI 注册中心中了。只要你拥有合法的用户和密码,上面的流程适用于任何遵循 UDDI 第一版的注册中心。
导入 Web 服务
你刚刚在 UDDI 注册中心中发布了一个 WSDL Web 服务,但是你将如何在 UDDI 注册中心中查找一个 WSDL Web 服务并且使用它呢?Application Developer 提供了导入并且使用 WSDL Web 服务的功能。作为开始,首先创建一个新的 Web project。我们将以 IWSClient 作为这个项目的名称,并用 IWSClientEAR 作为它的 EAR 名称(请参阅本系列教程的第一部分)。在导航视图中选中这个新项目,选择
File => Import。然后选择
UDDI并点击
Next。在 UDDI 导入页面上,点击
Finish,启动 UDDI explorer。
图9. UDDI Import 页面
在 UDDI explorer导航栏中,展开
Favorites后你将看到以前的操作已经把 Local UDDI Registry 加入到 UDDI explorer的 Favorites 中了。 展开
Local UDDI Registry,你会看到所有对该 UDDI 可以进行的操作。
选择
Find Business Services,在 Actions 栏中,你可以输入一个特定的服务名称。在本例中,只输入了 wea,然后点击
Go按钮。 UDDI explorer将会在 UDDI 注册中心中查找到相关的已发布服务,并把结果显示在导航栏中:
图10. UDDI explorer 在 UDDI 注册中心中查找到相关的已发布服务,并把结果显示在导航栏中
选择
WeatherForecastService后,Actions 栏将会像下图那样提供这个服务的描述:
图11. Actions 栏显示了这个服务的描述
选择
Import to Workbench(在操作栏中以一个
图标表示)来导入 WSDL。之后,Actions 栏将会要求你确认是否确实要把该 Web 服务的 WSDL 导入到 Application Developer 的 IWSClient 项目中。点击
Go,状态栏将以“WeatherForecast-service.wsdl was successfully imported into Web project IWSClient.” 的信息告诉你操作成功的完成。这时,你就可以关闭 UDDI explorer了。
Application Developer 的导航视图显示了导入到 IWSClient 项目的 WSDL 文件:
图12. Application Developer 导航视图显示了导入到 IWSClient 项目的 WSDL 文件
使用 Web 服务
在这部分中,我们将要利用导入的 WSDL 文件为 WeatherForecast Web 服务生成一个 Test Client。在这个例子中,Application Developer 的 WebSphere 测试环境既是 clientHost 又是 wsHost。虽然
clientHost 和
wsHost 又一次相同,但是这里描述的步骤同样适用于在不同的
wsHost 上的 Web 服务。
为了测试这个 Web 服务,我们需要生成一个 proxy 和一个 test client,这些我们已经在第一部分详细的作了介绍。正如下面要介绍的,现在的步骤会有些序的不同。为了由导入的 WSDL 文件为该 Web 服务创建 proxy,选择
IWSClient项目,然后选择
File =>New => Other,在New 对话框中,在左栏中选择
Web Services,在右栏中选择
Web Service Client。
图13.New 对话框
然后点击
Next,你将看到 Web Service 向导的第一个页面。确认 IWSClient Web 项目被选中后点击
Next。
接下来将会是 Web Service File Selection 页面。WSDL 文件应该已经被选中,点击
Next。
图14. Application Developer 的 Web Service File Selection 页面。
在下面的 Binding proxy Generation 页面,点击
Next。在 Test Client 页面上也点击
Next。
在接下来的 Sample Generation 页面,选择
Generate a sample,然后
Launch the sample,最后点击
Finish。
Application Developer 会生成一个 proxy,sample client 将会通过这个 proxy 去访问由 WSDL 描述的 Web 服务。然后,Application Developer 将启动这个 sample client:
图15. Application Developer 启动了sample client
现在,你就可以按照该系列教程的第一部分中所描述的步骤去测试这个 Web 服务(和 proxy)了。
总结
本文介绍了利用 WebSphere Studio Application Developer 向遵循 UDDI 的注册中心(WebSphere UDDI 注册中心)发布 WSDL Web 服务的必要步骤。而且,本文还展示了如何利用 Application Developer 在 UDDI 注册中心中查找 Web 服务、导入描述 Web 服务的 WSDL,以及使用 Web 服务。Application Developer 自动地完成这一流程中的许多步骤,从而大大简化了开发流程,使创建和测试 Web 服务变得十分简单。
下载 | 名字 | 大小 | 下载方法 |
|---|
| workspace.zip | 10 KB | HTTP |
参考资料
- 该系列教程的
第一部分 描述了如何利用 Application
Developer 创建一个 Web 服务。
- 该系列教程的
第三部分介绍了如何创建一个使用该 Web 服务的应用。
- 该系列教程的
第四部分说明了如何将完成的 Web 服务部署到 WebSphere 应用服务器4.0版的投产环境中以及如何运行调用该 Web 服务的应用。
- IBM developerWorks 教程,
《创建一个完整的
Web 服务》,提供了有关 Web 服务范例的解释,并且讨论了本文提到的工具的早期版本。
关于作者  | |  | Greg Flurry 是一个 STSM,目前在 IBM 的新兴技术组中工作。他的主要责任就是促进 IBM
的电子商务技术,特别是 IBM 的 Web 服务技术。你可以通过
flurry@us.ibm.com和他联系。
|
对本文的评价
|