级别: 初级 Bob O'Hanlon (bob_ohanlon@uk.ibm.com), 软件工程师, IBM
2005 年 2 月 23 日 2005 年 7 月 26 日 更新 本文描述了如何创建 Web 服务网关,配置现有的后端 Web 服务,然后通过 IBM® WebSphere® Application Server V6 中的 SOAP/HTTP 协议测试它们的调用。
概述
WebSphere Application Server V5 中的 Web 服务网关已重新建立在 V6 中的服务集成总线(以下称为总线)和 Web 服务支持的基础之上。网关实则是一个工具,它为管理员提供了一种通过总线映射 Web 服务的简便方法。它支持映射各种协议。在本文中,Web 服务调用使用一种协议 (SOAP/HTTP)。SOAP/HTTP 请求传入网关,然后又通过 SOAP/HTTP 重定向到外部服务。本文指导您完成创建网关服务的整个过程。
配置
计划配置如图 1 所示。该关系图描述了请求和响应如何流过总线,并重点说明了配置网关服务的必要步骤,如下所示:
- 创建端点侦听器和应答目的地,并将其连接到总线。
- 在总线上创建网关实例。
- 在网关实例中创建网关服务,包括创建和配置:
- 网关的请求目的地和响应目的地
- 出站服务和入站服务目的地
- 出站端口和入站端口目的地
- 入站端口
图 1. 计划配置概述
我们将使用 Application Server 管理控制台完成此配置。本文假定已经配置了总线,并完成了 WebSphere Application Server Information Center 中 SIBWS - Completing the installation 的步骤。在本文中,我们将 DeveloperWorksBus 作为 SIBus 名称。
创建端点侦听器
端点侦听器是 SOAP/HTTP 消息进入网关的入口点。在创建网关服务之前,您将需要配置端点侦听器。
- 从管理控制台的导航窗格中选择 Servers => Application servers。
- 在内容窗格中选择
server_name
。
- 在 Additional Properties 下选择 Endpoint Listeners => New。
图 2. 配置端点侦听器
- 在端点侦听器页上指定下列值:
-
Name:
SOAPHTTPChannel1
-
URL Root:
http://host_name:port_number/wsgwsoaphttp1。这将成为服务端点的上下文路由。
-
WSDL serving HTTP URL Root:
http://host_name:port_number/sibws。这将成为 WSDL 地址的上下文路由。
- 单击 OK。
- 选择端点侦听器 SOAPHTTPChannel1。
- 在 Additional Properties 下选择 Connection Properties。
- 选择 New,然后选择 DeveloperWorksBus。
- 单击 OK,保存配置。
创建网关实例
网关实例为您提供用于 Web 服务请求的单点管理,其中选定的用户可以启用和控制对 Web 服务的访问。在创建网关服务之前,您必须创建网关实例。
- 从管理控制台导航窗格中选择 Service integration => Buses。
- 在内容窗格中选择DeveloperWorksBus。
- 在 Additional Properties 下选择Web service gateway instances。
- 在 Web 服务网关实例页上选择 New。
图 3. 创建网关实例
- 在 Web 服务网关实例创建页上,指定下列值:
-
Name:
DeveloperWorksGateway。(这是本文所选的任意名称;您可以按自己的意愿命名网关。)
-
Gateway namespace:
http://developer.works. (同样,这也是一个任意指定的名称;您可以按照自己的意愿为该网关实例提供特定的名称空间。)
-
Default proxy WSDL URL:
http://host_name:port_number/sibws/proxywsdl/ProxyServiceTemplate.wsdl。这是提供的缺省代理 WSDL。
- 应用并保存更改。
创建网关服务
当创建网关服务时,您需要将其与一个外部服务相关联。您可以通过在创建网关服务时提供外部服务 WSDL 来实现这一操作。网关服务是从网关实例的管理功能中创建的。如果您使用本文所提供的示例,则需要安装应用程序 StringService.ear。
- 从导航窗格中选择 Service integration => Buses。
- 在内容窗格中选择
DeveloperWorksBus。
- 在 Additional Properties 下选择 Web service gateway instances。
- 在 Web 服务网关实例页上选择 DeveloperWorksGateway。
- 在 DeveloperWorksGateway 页上的 Additional Properties 下选择 Gateway services。
- 在网关服务页上选择 New。
- 选择 WSDL-defined Web service provider 作为目标服务的类型。
- 单击 Next。新的网关服务向导打开。下面部分描述如何通过该向导来创建网关服务。
步骤 1:指定网关服务和目的地名称
在这一步,我们将为网关服务和目的地指定名称。
图 4. 指定网关服务和目的地名称
- 输入下列值:
-
Gateway service name:
DeveloperWorksGatewayService。(这是一个任意指定的名称;您可以按照自己的意愿命名网关服务。)
-
Gateway request destination name:
DWGSRequestDestination。
该目的地处理网关的请求消息。
-
Gateway response destination name:
DWGSResponseDestination.
该目的地处理网关的响应消息。
(网关响应和请求目的地名称是任意指定的。)
注意:在应用程序服务器中,将目的地定义为服务集成总线中的虚拟位置,应用程序作为生产者和/或使用者附加在其中来交换消息。
由于我们在这里不使用中介,因此只要求有上面的值即可。
- 单击 Next。
步骤 2: 定位目标服务 WSDL
在这一步,我们将提供外部服务 WSDL 地址。
图 5. 定位目标服务 WSDL
- 输入下列值:
-
WSDL location type:
URL
-
WSDL location:您希望使用的 WSDL URL 或 WSDL 文件。如果您使用的是示例应用程序,则 URL 是:
http://host_name:port_number/StringService/wsdl/stringService.wsdl
- 单击 Next。
步骤 3: 选择服务
在这一步,我们将在 WSDL 中选择希望配置的服务。示例应用程序中仅有一个缺省选择服务。
图 6. 选择服务
单击 Next。
步骤 4: 选择端口
在这一步,我们将在 WSDL 中选择希望配置的端口。示例应用程序中仅有一个端口。
图 7. 选择端口
选择缺省端口并单击 Next。
步骤 5: 命名服务和端口目的地
在这一步,我们将外部服务设置为出站服务,并将它的目的地与在步骤 1 中创建的网关请求和回应目的地相关联。向导根据 WSDL 在该页上为您设置一些缺省值。您可以按照自己的意愿重写这些值。
图 8. 命名服务和端口目的地
- 如果您使用的是示例应用程序,则输入下列值:
-
Outbound service name:
StringServiceOutboundService
-
Service destination name:
StringServiceOutboundServiceDestination
-
Port destination name:
StringServiceOutboundPortDestination
- 单击 Next。
步骤 6: 选择服务点和端口目的地
在这一步,我们将选择要使用的总线成员。(在最初创建总线时,您已将服务器添加到总线,以使它成为总线成员。)
图 9. 选择服务点和端口目的地
选择总线成员并单击 Next。
步骤 7: 选择端点侦听器
在这一步,我们将指定在前面创建的端点侦听器 SOAPHTTPChannel1。
图 10. 选择端点侦听器
单击 Next。
步骤 8: 定义 UDDI 发布属性
如果希望将服务发布到 UDDI,执行这一步即可完成此操作。
图 11. 定义 UDDI 发布属性
选择 Finish,保存更改。
测试网关服务
现在我们已完成了对网关服务的配置,并准备测试它。和在以前的版本中一样,网关已生成一些新的可以向服务请求公开的 WSDL。如果您使用的是示例应用程序,则可以通过如下地址查看 WSDL 界面:http://host_name:port_number/sibws/wsdl/DeveloperWorksBus/DeveloperWorksGatewayService
您可以将 ?wsdl=bindings 或者 ?wsdl=porttypes 分别追加到该 URL 来查看 WSDL 绑定和端口类型定义。
如果您使用的是示例客户机,则可以从 WSDL 界面和绑定派生该网关服务的动态调用界面 (DII) JAX-RPC 调用所需的参数,如下所示:
-
Operation namespace:
http://service.string
-
Service namespace:
http://developer.works/Service
-
Endpoint:
http://host_name:port_number/wsgwsoaphttp1/soaphttpengine/DeveloperWorksBus/
DeveloperWorksGatewayService/SOAPHTTPChannel1InboundPort
使用带有这些参数的 stringClient 测试网关服务:
java stringClient <Endpoint_Address> <Operation_Namespace> <Service_Namespace> <string> |
客户机发送一个字符串,服务应该成功返回您所发送的字符串。
结束语
现在,我们已经使用 Web 服务网关将现有 Web 服务作为总线中的目的地,然后通过向导将该目的地公开为网关 Web 服务。当完成该向导时,所有的配置构件都已经创建和配置好了。您也可以通过在 Application Server 管理控制台中单独配置出站服务、入站服务以及端口来得到相同的结果,但这里给出的方法要简单的多。此外,您还了解了使用网关服务的好处。
下载 | 描述 | 名字 | 大小 | 下载方法 |
|---|
| sample code | DevWorks_Gateway_Sample.zip | 1.6 KB |
FTP | HTTP |
|---|
参考资料
关于作者  | 
|  | Bob O'Hanlon 在英国 Hursley 的 IBM Web Services Test 工作。自从 Web 服务网关服务开始作为 WebSphere Application Server V4 的技术预览,他就一直负责对它进行测试。他为 Application Server V5 和 V6 Information Centers 做出了很大贡献。 |
对本文的评价
|