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

developerWorks 中国  >  WebSphere  >

使用 WebSphere Studio Application Developer 发布、发现和测试基于 Microsoft .NET 的 Web 服务

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

样例代码


级别: 初级

Yen Lu (yenlu@ca.ibm.com), 软件开发人员,WebSphere Studio Application Developer, IBM 多伦多实验室

2002 年 4 月 01 日

本文向您展示怎样使用 Application Developer Web 服务工具在一个模拟的企业到企业(Business to Business,B2B)的环境中发布、发现和测试基于 Microsoft .NET 的 Web 服务(一个抵押付款计算器)。

© 2002 International Business Machines Corporation 版权所有。

介绍

本教程向您展示 WebSphere® Studio Application Developer 4.0.2 能够如何访问 Microsoft® .NET 工具产生的 Web 服务文件。

Application Developer 4.0 提供了创建、发布、发现和测试 Web 服务的工具。IBM 和 Microsoft 对 Web 服务描述语言(Web Service Description Language,WSDL)和简单对象访问协议(Simple Object Access Protocol,SOAP)规范如何解释的不同之处导致了 Application Developer 最初的发布版本和使用如 Visual Studio .NET 之类的 Microsoft 工具创建的 Web 服务之间的不兼容性。虽然这里的很多问题在 Application Developer 4.0.2 中都得到了解决,我们可能还是需要一个手工的变通方法来将这些 Web 服务发布到 IBM UDDI 测试注册中心(IBM UDDI Test Registry)中去。问题在于,Microsoft 工具为每个 Web 服务生成一个单一的 WSDL 文件,而 Application Developer UDDI Explorer 希望接口和实现元素处于分开的 WSDL 文件中。变通方法是要在发布操作期间手工地将单一的 WSDL 文件一分为二。

本教程向您展示怎样使用 Application Developer Web 服务工具在一个模拟的企业到企业(Business to Business,B2B)的环境中发布、发现和测试基于 Microsoft .NET 的 Web 服务(一个抵押付款计算器)。教程的参与者将扮演下面的角色:

  • 希望发布其服务的企业(发布者角色)
  • 需要使用服务的企业(发现者和测试者的角色)

通过使用 Application Developer UDDI Explorer,Web 服务将被发布到 IBM UDDI 测试注册中心并从该注册中心被发现。一旦您发现服务并将其导入 Application Developer,您就会使用 Web Services Client 向导生成一个样本客户,然后测试它。





回页首


教程要求

  • Application Developer 4.0.2。
  • 因特网连接 ? 直接连接,或通过 HTTP 代理服务器连接(在 Application Developer Internet Preferences 页配置代理服务器设置)。
  • 登录到 IBM UDDI 测试注册中心的用户 ID 和密码。 IBM UDDI 测试注册中心的注册和信息
  • 有关 Web 服务、WSDL、UDDI、XML 与 Application Developer 4.0 Web 和服务器透视图和相关工具的基本知识。




回页首


创建服务提供者的 Web 工程

  1. 运行 Application Developer 4.0.2。
  2. 创建一个名为 MortgagePmtProject 的新的 Web 工程。
    1. 从主菜单选择 File => New => Other来查看向导列表。
    2. 在左面窗格中选择 Web,接着在右面窗格中选择 Web Project,然后单击 Next。请参阅下面的图 1。


      图 1. 从向导列表中选择 Web Project 向导
      从向导列表中选择 Web Project 向导
    3. 在 Web Project 向导(请参阅下面的图 2)中,在 Project name 域中键入 MortgagePmtProject,然后单击 Finish


      图 2. 在 Web Project 向导中将 Web 工程的名称指定为 MortgagePmtProject
      在 Web Project 向导中将 Web 工程的名称指定为 MortgagePmtProject

      一个 DefaultEAR EAR 工程也将被创建,并作为 MortgagePmtProject 的同级产物出现在 Navigator 树视图中。请参阅下面的图 3。


      图 3. Web 透视图的 Application Developer Navigator 树视图中的 MortgagePmtProject Web 和 DefaultEAR EAR 工程
      Web 透视图的 Application Developer Navigator 树视图中的 MortgagePmtProject Web 和 DefaultEAR EAR 工程




回页首


准备服务接口和服务实现 WSDL 文件

要发布的 Web 服务是一个抵押付款计算器。给定利率、贷款额和按月偿还期,服务会返回所需的每月付款金额。在 Web 服务可以用 Application Developer UDDI Explorer 发布之前,它的 WSDL 文件必须可以通过 HTTP 访问。这个服务的 WSDL 描述可以通过 HTTP 在 http://www.vbws.com/services/MortgagePmt.asmx?WSDL获得。这是一个遵循 XML 的文件。正如前面所提到的,Application Developer UDDI Explorer 不能处理单一的 WSDL 文件。取而代之,WSDL 描述必须被分成一个 服务接口文档和一个 服务实现文档。 WSDL 文档类型部分和 Understanding WSDL in a UDDI registry,Part 1一文的图 2 中更详细地描述了这两个文档之间的区别。

WSDL 服务接口文档包含下面的元素: typesimportmessageportTypebinding,而 WSDL 服务实现文档包含 importservice元素。对 Web 服务的 WSDL 的一个检查展现了下面的元素: typesmessageportTypebindingservice。本文档不属于任何一类,但它包含了分成两个所需文件的足够信息。

  1. 打开一个外部的 Web 浏览器并导航至 http://www.vbws.com/services/MortgagePmt.asmx?WSDL

  2. 在浏览器中选择 File => Save As将此文件保存到本地文件系统,名称为缺省的 MortgagePmt。文件将在选定的目录中被保存为 MortgagePmt.asmx 。从这里开始,我们假定文件有完全路径名 x:\MortgagePmt.asmx 。附带的压缩文档中包括此文件。在一个文本编辑器中打开此文件。

  3. 打开文本编辑器的一个新的实例并创建一个新文档。输入下面的文本:
    <?xml version="1.0" encoding="utf-8">
    </definitions>
                

    在两个标签之间留下一个空行。从包含 x:\MortgagePmt.asmx 的文本编辑器实例中选取两个标签之间除了 <service></service> 部分之外的所有内容,并将其复制到新文件的空行处。这个新文件表示 WSDL 服务接口文档。将此文件保存为 x:\MortgagePmt-interface.wsdl 。附带的压缩文档中包括此文件。

  4. 打开文本编辑器的一个新的实例并创建一个新文档。输入下面的文本:
    <?xml version="1.0" encoding="utf-8">
    </definitions>
                

    在两个标签之间留下一个空行。从包含 x:\MortgagePmt.asmx 的文本编辑器实例将 <definitions> 标签复制到新文件的空行处,后面紧跟 <service></service> 部分。在 <definitions><service> 标签之间添加下面的标签:

    <import namespace="http://tempuri.org/" 
      location="http://localhost:8080/MortgagePmtProject/
      wsdl/MortgagePmt-interface.wsdl"/>
                

    这一行导入步骤 3 中创建的服务接口文件。import 标签的 location 属性是一个使用 8080 端口的 HTTP URL。如果 8080 端口被占用,应该将这个端口改为另一个空闲端口。在下面的步骤中,我们将把这个 URL 变为有效和正确的。新文件表示 WSDL 服务实现文档。将这个文件保存为 x:\MortgagePmt-service.wsdl 。附带的压缩文档中包括此文件。

  5. x:\MortgagePmt-interface.wsdlx:\MortgagePmt-service.wsdl 文件导入到前面 Application Developer 中创建的 MortgagePmtProject 中:
    1. 在 Application Developer 中,在 Navigator 树视图中展开 MortgagePmtProject。
    2. 选择 webApplication文件夹。
    3. 从主菜单选择 File => Import查看 Import 向导列表。
    4. 如下面的图 4 所示选择 File System,然后单击 Next进入 Import from File System 向导。


      图 4. 从 Import 向导列表选择 Import from File System 向导
      从 Import 向导列表选择 Import from File System 向导
    1. 在向导中选择 Browse打开浏览对话框,然后选择 x:并单击 OK
    2. 在向导中,左边的树视图中应该出现一个 x:文件夹。选择它以在右面窗格中显示文件列表。
    3. 选择 MortgagePmt-interface.wsdlMortgagePmt-service.wsdl 文件。
    4. 向导中部的 Folder: 域指定导入的目标文件夹。将其改为:
      MortgagePmtProject/webApplication/wsdl
                      

      下面的图 5 展示了带有 Browse 按钮 Import from File System 向导,其中选定了 WSDL 文件,并指定了正确的目标文件夹。


      图 5. 选定了 WSDL 文件并指定了正确的目标文件夹的 Import from File System 向导
      选定了 WSDL 文件并指定了正确的目标文件夹的 Import from File System 向导
    1. 单击 Finish完成导入。

  6. 创建并运行一个服务器以托管 WSDL 文件:
    1. 如果没有现成的 Server 透视图,就通过选择 Perspective=>Open=> Other创建一个。在 Select Perspective 对话框中选择 Server => Finish,如下面图 6 所示。工作台现在就会显示 Server 透视图。
      图 6. 从 Select Perspective 对话框创建一个 Server 透视图
      从 Select 透视图对话框创建一个 Server 透视图
    1. 在 Server 透视图中创建一个新的服务器工程连同一个实例和配置。选择 File => New => Server Instance and Configuration。在 Create a New Server Instance and Configuration 向导中输入 WSDL Server作为服务器名和 Servers作为文件夹名,如下面的图 7 所示。在 Server instance type 树视图中展开 WebSphere Servers 并选择 WebSphere v4.0 Test Environment。单击 Next并确认要创建服务器和配置。当下一页打开时,验证 HTTP 端口号是否为 8080。如果端口 8080 已经被占用,您就需要使用一个不同的端口(请参阅步骤 4)。最后,单击 Finish完成此任务。
      图 7. 创建服务器实例和配置
      创建服务器实例和配置
  7. 如果 Server 透视图中没有现成的 Server Configuration 视图,那么通过选择 Perspective => Show View => Server Configuration来创建它。在本视图中,展开 Server Configurations 文件夹,右键单击 WSDL Server,然后从弹出菜单中选择 Add Project => DefaultEAR。下面的图 8 展示了在这些操作之后节点全部展开的 Server Configuration 视图。
    图 8. 节点全部展开的 Server Configuration 视图
    节点全部展开的 Server Configuration 视图
  8. 要启动服务器,请在 Server 透视图中右键单击 WSDL Server。(如果它不可用,请选择 Perspective => Show View => Servers来查看它的弹出菜单,然后选择 Start)。在启动期间,Processes 和 Console 视图可能被打开并覆盖 Server 透视图。要在这些视图之间切换,请单击底部的选项卡。下面的图 9 显示了这些选项卡,其中 Server 透视图被选中。该图还展示了 WSDL 服务器已经完成了启动,如状态栏所显示。
    图 9. 选定的 Servers 视图展示突出显示的底部选项卡和 WSDL 服务器的状态
    选定的 Servers 视图展示突出显示的底部选项卡和 WSDL 服务器的状态
  9. 通过打开一个浏览器并导航至下面的 URL 来验证 WSDL 文件的 URL 是否有效:

    http://localhost:8080/MortgagePmtProject/wsdl/MortgagePmt-interface.wsdl
    http://localhost:8080/MortgagePmtProject/wsdl/MortgagePmt-service.wsdl

    这些 URL 假定在步骤 4 和步骤 6 使用了 8080 端口。如果需要,请用实际的端口号来代替这个数值。





回页首


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

UDDI Explorer 将 Web 服务作为 UDDI 商业服务发布到 UDDI 注册中心,它包含一个指向 WSDL 服务实现文档(WSDL URL)的指针。所有 UDDI 商业服务都必须关联到一个 UDDI 商业实体(服务的提供者)。在 UDDI Web 站点上可以了解关于 UDDI 标准的更多信息。下面的过程既可以用于发布商业实体,也可以用于发布 Web 服务:

  1. 选择 File => Export以查看 Export 向导列表。从列表选择 UDDI,如下面的图 10 所示,然后选择 Next => Finish
    图 10. 从 Export 向导列表中选择 UDDIExport 向导
    从 Export 向导列表中选择 UDDI  Export 向导
  2. 在 UDDI Explorer 中,在 UDDI Navigator 树视图的左边选择 IBM Test Registry节点。此节点的属性和行为会显示在右上方的 Actions 窗格中。

  3. 在 Actions 窗格工具栏中选择 Publish Business Entity行为(由 Publish Business Entity 行为按钮表示)。在允许对 IBM UDDI 测试注册中心进行任何写操作之前,您必须登录。因此,Login 页面会被打开。在 User ID 和 Password 域填入正确的输入项代替下面图 11 中展示的示例,然后单击 Go
    图 11. 使用 Application Developer UDDI Explorer 登录到 IBM UDDI 测试注册中心
    使用 Application Developer UDDI Explorer 登录到 IBM UDDI 测试注册中心
  4. 一旦登录成功,Publish Business Entity 页面就会被打开。在 Name 域输入 MortgageBus。因为其它用户可能也使用相同的商业实体名称,所以请添加一个标识让这个 MortgageBus 更唯一。在 Identifiers 表中单击 Add添加一个标识。页面应该会重新装入,并在 Identifiers 表中添加了一个包含两个域的新行。在 key name 和 key value 域中分别输入 userid 和前一个步骤中登录所使用的真实的用户 ID。下面的图 12 展示了完整的页面,示例用户 ID 为 abc。最后,单击以发布商业实体。
    图 12. 发布 MortgageBus UDDI 商业实体
    发布 MortgageBus UDDI 商业实体
  5. 一旦商业实体被发布,这个实体就会出现在左边的 UDDI Navigator 树视图中,作为 IBM 测试注册中心节点的一个子节点。选择这个商业实体(MortgageBus),在右上方的 Actions 窗格中显示它的属性和行为。

  6. 在 Actions 窗格工具栏中,选择 Publish Business Service行为(由  alt=Publish Business Service 行为按钮"> 表示)来装入发布表单。此表单中必须填写的域是 WSDL 实现文件的 URL,如下面的图 13 所示,它由一个红色的星号标记。单击 Browse。在 Workbench WSDL Browser 对话框中,分别在 Web Project 和 WSDL URL 下拉列表中选择 MortgagePmtProjecthttp://localhost:8080/MortgagePmtProject/wsdl/MortgagePmt-service.wsdl,如下面的图 14 所示。单击 Go接受输入项并关闭窗口。验证 WSDL URL 选择是否被成功传送到 Publish Business Service 表单中的 URL for WSDL Implementation file 域,然后单击 Go发布商业服务。
    图 13. Publish Business Service 表单(其中红色星号表示 WSDL 实现文件的 URL 必须填写)
    带有表示到 WSDL 实现文件的 URL 的需求的红色星号的 Publish Business Service 表单

    图 14. 选择了 MortgagePmtProject 和 WSDL URL 的 Workbench WSDL Browser 对话框
    选择了 MortgagePmtProject 和 WSDL URL 的工作台 WSDL 浏览器对话框
  7. 要验证商业服务被成功发布,就要确保一个新的节点 MortgageService 作为左边的 UDDINavigator 树视图中的 MortgageBus 节点的一个子节点被添加。下面的图 15 展示了这部分的结果。
    图 15. 成功发布商业实体和服务之后的 UDDI Navigator 树视图
    成功发布 Business Entity and Service 之后的 UDDI Navigator 树视图




回页首


发现 Web 服务和将 WSDL 导入 Application Developer

想要使用抵押付款计算器 Web 服务的企业使用 Application Developer 可以从 WSDL 服务实现文件(甚至仅从它的 URL)生成必需的代理和一个样本测试客户。UDDI Explorer 可以定位 IBM UDDI 测试注册中心中的 UDDI 商业服务。UDDI Explorer 使用指向 WSDL 服务实现文件的指针把文件从这个对象下载到 Application Developer Web 工程。下面的步骤模拟了这个过程。

  1. 在 UDDI Explorer 左边的 UDDI Navigator 窗格中,选择 IBM Test Registry 节点的 Find Business Entities子节点。UDDI Explorer 右边的 Action 窗格将装入从 IBM 测试注册中心查找 UDDI 商业实体所必需的表单。

  2. 在 Actions 窗格工具条中选择 Find Business Entities by Identifier行为(由 Find Business Entities by Identifier 行为按钮表示)。当 Actions 窗格完成装入 Find Business Entities by Identifier 表单之后,将 Name of this query 域的内容由查找结果改为 Q1。在 Identifiers 表中单击 Add添加一个标识。页面会重新装入,并在 Identifiers 表中有一个包含两个域的新行。在 key name 和 key value 域中输入前面部分的步骤 4 中指定的 userid 和实际的用户 ID。下面的图 16 展示了完整的页面,用户 ID 为 ABC。最后,单击 Go开始搜索。
    图 16. 带有查询条件的 Find Business Entities by Identifier 表单
    带有查询条件的 Find Business Entities by Identifier 表单
  3. 如果搜索成功,UDDI Explorer 左边的 UDDI Navigator 窗格中就会添加一个名为 Q1 的节点,它作为 IBM Test Registry 节点的一个子节点。在这个新节点下还应该会添加一个名为 MortgageBus 的商业实体节点。这表示搜索结果。展开此节点并选择 Find Business Services 子节点以将其属性和行为装入右上方的 Actions 窗格中。

  4. 在 Actions 窗格工具条中,单击 Find All Business Services行为(由 Find All Business Services 行为按钮表示)。在装入表单后,将 Name of this query 域的内容由查询结果改为 Q2,如下面的图 17 所示,然后单击 Go执行搜索。
    图 17. 带有查询条件的 Find All Business Services 表单
    带有查询条件的 Find All Business Services 表单
  5. 成功的搜索结果会添加一个名为 Q2 的查询结点作为 MortgageBus 的一个子节点,商业服务 MortgageBus 作为查询结点的一个子节点,表示搜索结果。下面的图 18 展示了此时的 UDDI Navigator 树视图。
    图 18. 成功发现商业实体和服务之后的 UDDI Navigator 树视图
    成功发现商业实体和服务之后的 UDDI Navigator 树视图
  6. 返回到 Application Developer 然后创建一个新的名为 MortgagePmtClientProject 的 Web 工程。遵循上面创建服务提供者的 Web 工程 MortgagePmtProject 的指导。

  7. 选择 MortgageService节点将其属性和行为装入右上方的 Actions 窗格。在之后的 Actions 窗格工具条中选择 Import to workbench(由 导入工作台行为按钮表示)。在之后的表单中选择 Web 工程下拉菜单中的 MortgagePmtClientProject,不必理会 WSDL file 域的内容 MortgagePmt-service.wsdl ,如下面的图 19 所示,然后单击 Go。WSDL 文件会被下载至 MortgagePmtClientProject Web 工程的根目录,并命名为 MortgagePmt-service.wsdl ,如下面的图 20 所示。
    图 19. 为了将 MortgagePmt-service.wsdl 导入 MortgagePmtClientProject Web Project 而将 WSDL 导入工作台表单
    为了将 MortgagePmt-service.wsdl 导入 MortgagePmtClientProject Web Project 而将 WSDL 导入工作台表单

    图 20. 选择了导入的 MortgagePmt-service.wsdl 文件的 Application Developer Navigator
    选择了导入的 MortgagePmt-service.wsdl 文件的 Application Developer Navigator




回页首


在 Application Developer 中测试 Web 服务

Application Developer Web Service Client 向导能够生成一个代理和样本,以快速测试 Web 服务。此过程的输入既可以是一个 WSDL 服务实现文件,也可以是到此文件的 URL。因为前面部分已经下载了 WSDL 服务实现文件,所以这一部分将讨论第一种情况。

  1. 展开 Application Developer 中 Navigator 树视图中的 MortgagePmtClientProject Web Project,然后选择 MortgagePmt-service.wsdl ,如上面的图 20 所示。右键单击对象,然后从弹出菜单中选择 New => Other查看向导列表。

  2. 在此向导左面窗格中选择 Web Services。右面窗格然后就应该列出和 Web Services 相关联的各种向导。从此窗格选择 Web Service client,如下面的图 21 所示。单击 Next显示 Web Service Client 向导。
    图 21. 从向导列表中选择 Web Service Client 向导
    从向导列表中选择 Web Service Client 向导
  3. 在之后的向导中,确保在 Web Project 下拉菜单中选择了 MortgagePmtClientProject。还要选择以下复选框: Generate a proxy、Generate a sample、Launch the sampleOverwrite files without warningCreate folders when necessary,如下面的图 22 所示。单击 Finish继续。
    图 22. Web Service Client 向导和选项
    Web Service Client 向导和选项
  4. 样本将在 Web 浏览器中运行(既可以嵌入 Eclipse,也可以在 Eclipse 之外,依赖于用户的喜好和平台)。样本包含三个窗格:Methods、Inputs 和 Results,如下面的图 23 所示。在 Methods 窗格中,选择 MortgageCalculation链接。

  5. Inputs 窗格应该改成显示三个域:InterestRate、NumberofMonths 和 LoanAmount,还有 Invoke 和 Clear 按钮。在 InterestRate、NumberofMonths 和 LoanAmount 中分别输入 10121000

  6. 单击 Invoke使用这三个参数执行 Web 服务。运行 Web 服务的结果在 Results 窗格中显示。应该会显示每月付款金额为 87.92,如下面的图 23 所示。
    图 23. 测试 Mortgage Payment Web 服务之后的样本 Web 服务客户
    测试 Mortgage Payment Web 服务之后的样本 Web 服务客户

    有时候,IBM UDDI 测试注册中心在维护期间将不可用。在这个时候,登录、发现和发布操作将会超时并失败。如果发生这种情况,迟一点再尝试再次操作。 关于 IBM UDDI 测试注册中心更详细的信息





回页首


结束语

本教程向您展示了怎样使用 Application Developer Web Services 向导和工具发布、发现和测试使用 Microsoft .NET 工具制作的 Web 服务。教程包括 Application Developer UDDI Explorer 处理单一 WSDL 文件所需的步骤。有了这个变通方法,Application Developer Web Services 向导和工具大大地简化了 Web 服务的发布、发现和测试。






回页首


下载

名字大小下载方法
archive.zip3 KBHTTP
关于下载方法的信息


关于作者

Yen Lu是 IBM 多伦多实验室 WebSphere Studio Application Developer Web Services Tools 小组的软件开发人员。他主要负责 UDDI Explorer 的开发。可以通过 yenlu@ca.ibm.com与他联系。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?




回页首


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