本系列介绍 WebSphere® Service Registry and Repository V6.2(以下称为 Registry)中服务发现的高级功能。在第 1 部分中,我们讨论了服务发现机制,并准备好了包含 Web 服务的目标环境。第 2 部分将介绍如何通过为希望搜索可用 Web 服务的每个服务器定义发现任务来启用和配置 Registry。可以通过使用 wsadmin 脚本手动触发发现,也可以根据 ServiceDiscoveryScheduler XML 文件中的定义按照指定的时间间隔运行。
服务发现应该在一个 XML 配置文件(即 ServiceDiscoveryConfiguration)中进行所有的配置工作。对于希望发现服务的每个目标环境,其中都有一个对应的 <discovery-task> 元素。可以使用自己的文件替换缺省配置,也可以对 Registry 中预加载的缺省配置文件进行修改。
要使用缺省配置文件配置 WebSphere Application Server 中的服务发现,请执行以下操作:
- 键入 http://<myhost>:<myport>/ServiceRegistry,以访问 Registry Web UI。
- 在 Perspective 列表中选择 Configuration,然后选择 Active Configuration => Plugins => Service Discovery,如图 1 中所示。
- 修改配置文件中的 XML 元素。
图 1. 使用 Web UI 配置服务发现
必须为每个目标环境定义独立的 <discovery-task> 元素。有关 XML 文件元素的详细信息,请参见参考资料。清单 1 显示了用于发现 WebSphere Application Server 中的服务的示例 <discovery-task> 元素。
清单 1. 配置针对 WebSphere Application Server 的发现任务
<service-discovery
xmln="http://www.ibm.com/xmlns/prod/serviceregistry/6/2/servicediscovery"/>
<discovery-task name="WASDiscoveryTask"/>
<discoverer type="WAS"/>
<configuration>
<instance name="WPSInst1"/>
<host>9.186.120.224</host>
<port>8883</port>
<conn-type>SOAP</conn-type>
<security-enabled>false</security-enabled>
<instance>
<instance name="WASInst1"/>
<host>localhost</host>
<port>8881</port>
<conn-type>SOAP</conn-type>
<security-enabled>true</security-enabled>
<username>db2admin</username>
<password>(DES)MTk4MTEwMDE=</password>
<instance>
</configuration>
</discovery-task>
</service-discovery>
|
清单 2 显示了用于发现 Microsoft .NET 中的服务的示例 <discovery-task> 元素。
清单 2. 配置针对 Microsoft .NET 的发现任务
<service-discovery
xmln="http://www.ibm.com/xmlns/prod/serviceregistry/6/2/servicediscovery"/>
<discovery-task name="DotNetDiscoveryTask"/>
<discoverer type="DOTNET"/>
<configuration>
<instance name="DotNetInst1"/>
<vsdisco-url>https://DotNetSvr2/webservice_root/webservices.vsdisco</vsdisco-url>
<security-enabled>true</security-enabled>
<username>administrator</username>
<password>(DES)MTIzNDU2Nzh3c3Jy</password>
<use-ssl>true</use-ssl>
<instance>
</configuration>
</discovery-task>
</service-discovery>
|
清单 3 显示了用于发现 Oracle Application Server 中的服务的示例 <discovery-task> 元素。
请注意可选的 <governance> 元素。对于每个发现任务,都可以定义一个独立的用于管理的配置设置。为此,请在 <discoverer> 元素之后定义一个 <governance> 元素。首次发现后,会将服务置于 <discovered-transition> 元素中指定的生命周期的初始阶段;生命周期过渡必须是为该状态定义的过渡之一,否则会出错。
清单 3. 配置针对 Oracle Application Server 的发现任务
<service-discovery
xmln="http://www.ibm.com/xmlns/prod/serviceregistry/6/2/servicediscovery"/>
<discovery-task name="OracleDiscoveryTask"/>
<discoverer type="ORACLE"/>
<governance>
<discovered-transition>
http://www.ibm.com/xmlns/prod/serviceregistry/6/0/governance/DefaultLifecycle#Discover
</discovered-transition>
<removed-transition>
http://www.ibm.com/xmlns/prod/serviceregistry/6/0/governance/DefaultLifecycle#Remove
</removed-transition>
</governance>
<configuration>
<instance name="OracleInst1"/>
<host>9.186.113.159</host>
<port>12401</port>
<conn-type>rmi</conn-type>
<security-enabled>true</security-enabled>
<username>oc4jadmin</username>
<password>(DES)b2M0amFkbWlu</password>
<instance>
</configuration>
</discovery-task>
</service-discovery>
|
此部分演示在第 1 部分中设置的环境的服务发现流程。其中将说明如何在 Registry 中存储和表示所发现的服务以及所治理的服务如何通过服务生命周期的各个状态。
首先,我们手动从四个服务器中发现服务。然后,我们设置调度程序从 Oracle Application Server 发现服务。
要从 WebSphere Application Server(计算机 1)手动发现服务,请执行以下操作:
- 根据需要修改 ServiceDiscoveryConfiguration XML 文件。
- 运行
executeSchedulerTaskImmediate.jacl脚本,以在独立或联合节点中启动服务发现:<WAS_Install_Root>\bin\wsadmin -f executeSchedulerTaskImmediate.jacl -cell <cellname> -node <nodename> -server <servername> -taskname <taskname>。在此示例中,<taskname> 为 WASDiscoveryTask。
从 Registry Web UI 查看所发现的服务:
- 从 Perspective 列表中选择 Administrator。然后选择 Business MetaData => Concepts。选择所发现的 EAR 文件的名称,如图 2 中所示。
- 在 Relationships 下选择 WAR 模块,如图 3 中所示。相关的 WSDL 和 XSD 文档显示在 Relationships 下,如图 4 中所示。
图 2. 从 WebSphere Application Server 发现的服务
图 3. 所发现的服务中的企业模块
图 4. 所发现的服务中的 WSDL 和 XSD 文档
接下来从 WebSphere Process Server(计算机 2)手动发现服务:
- 根据需要修改 ServiceDiscoveryConfiguration XML 文件。
- 运行
executeSchedulerTaskImmediate.jacl脚本,以在独立或联合节点中启动服务发现:<WAS_Install_Root>\bin\wsadmin -f executeSchedulerTaskImmediate.jacl -cell <cellname> -node <nodename> -server <servername> -taskname <taskname>。在此示例中,<taskname> 为 WASDiscoveryTask。
从 Registry Web UI 查看所发现的服务:
- 从 Perspective 列表中选择 Administrator。然后选择 Service Documents => SCA Integration Modules(图 5)。所发现的服务在表中列出。
- 在 SCA Integration Modules 下选择 SCA Export Documents(图 6)。
图 5. 所发现的 SCA 模块
图 6. 所发现的 SCA 导出文档
接下来运行脚本,以从 IIS 服务器(计算机 3)手动发现服务:
- 根据需要修改 ServiceDiscoveryConfiguration XML 文件。
- 运行
executeSchedulerTaskImmediate.jacl脚本,以在独立或联合节点中启动服务发现:<WAS_Install_Root>\bin\wsadmin -f executeSchedulerTaskImmediate.jacl -cell <cellname> -node <nodename> -server <servername> -taskname <taskname>。在此示例中,<taskname> 为 DotNetDiscoveryTask。
从 Registry Web UI 查看所发现的服务:
- 从 Perspective 列表中选择 Administrator。然后选择 Business MetaData => Concepts。服务显示在表中,如图 7 中所示。
- 选择 Service Documents => WSDL Documents,如图 8 中所示。将会显示相关的 WSDL 文档。
- 要查看所发现的服务、WSDL 文档和绑定的展开层次结构,请单击 DotNetInst1_TestService.asmx 的图形图标(图 7)。图 9 显示了展开的层次结构。
图 7. 从 .NET 发现的服务
图 8. 从 .NET 发现的服务的 WSDL 文档
图 9. 从 .NET 发现的服务的图表
接下来运行脚本,以从 Oracle Application Server(计算机 4)手动发现服务:
- 根据需要修改 ServiceDiscoveryConfiguration XML 文件。
- 运行
executeSchedulerTaskImmediate.jacl脚本,以在独立或联合节点中启动服务发现:<WAS_Install_Root>\bin\wsadmin -f executeSchedulerTaskImmediate.jacl -cell <cellname> -node <nodename> -server <servername> -taskname <taskname>。在此示例中,<taskname> 为 OracleDiscoveryTask。 - 因为 <governance> 元素定义在配置文件中(清单 3),所发现的服务将自动进入治理生命周期。即,将服务发布到 Registry 中时,其状态将为
discovered,而治理状态将为Discovered。
从 Registry Web UI 查看所发现的服务:
- 从 Perspective 列表中选择 Administrator。然后选择 Business MetaData => Concepts。选择所发现的企业应用程序的名称(OracleInst1_TestProject,如图 10 中所示)。
- Details 选项卡显示服务的状态。Governance 选项卡(图 11)显示治理状态。
图 10. 所发现服务的状态
图 11. 所发现服务的治理状态
在此部分,我们将设置并运行调度程序,以定期发现 Oracle Application Server 中的服务。在此示例中,已经将应用程序 TestProject 卸载。我们预期发现服务将检测到该应用程序不可用。
- 根据需要修改 ServiceDiscoveryConfiguration XML 文件。
- 从 Perspective 列表中选择 Configuration。然后选择 Active Configuration Profile => Plug-ins => Scheduler。
- 选择 ServiceDiscoveryScheduler 项并选择 Content 选项卡(图 2)。
- 根据需要修改调度程序配置。根据图 12 中所示 XML,调度程序以 60 分钟为间隔运行,将在一秒延迟后启动。
图 12. 配置服务发现调度程序
- 从 Oracle Application Server 卸载应用程序后,计划的发现任务再次运行,应用程序的状态从
discovered更改为nonInvokable(图 13),治理状态从Discovered更改为Missing(在 Governance 选项卡下,如图 14 中所示)。
图 13. 所发现服务的状态(应用程序已卸载)
图 14. 所发现服务的治理状态(应用程序已卸载)
- 在 Oracle Application Server 中重新安装应用程序服务发现再次运行时,应用程序的状态从
nonInvokable更改为discovered,治理状态从Missing更改为Discovered(图 15 和图 16)。
图 15. 所发现服务的状态(应用程序已重新安装)
图 16. 所发现服务的治理状态(应用程序已重新安装)
本系列演示 WebSphere Services Registry and Repository V6.2 中的服务发现高级功能。通过使用示例应用程序,说明了如何以自动和手动方式从 WebSphere Application Server、WebSphere Process Server、Microsoft .NET 和 Oracle Application Server 发现服务。
- 您可以参阅本文在 developerWorks 全球站点上的 英文原文。
- WebSphere Service Registry and Repository 中的服务发现,第 1 部分:搭建和配置环境:本文向您讲述如何搭建目标环境和安装 Web 服务。
- WebSphere business process management 专区:其中提供了大量关于 WebSphere BPM 解决方案(包括 WebSphere Service Registry and Repository)的技术参考资料。
- WebSphere SOA 专区:提供了大量关于 WebSphere SOA 解决方案的技术参考资料,包括文章、教程和下载等。
- 通过 WebSphere Application Server 信息中心了解关于 WebSphere Application Server 的更多信息。
- 通过 WebSphere Process Server V6.1 信息中心了解关于 WebSphere Process Server 的更多信息。
- 访问 WebSphere Service Registry and Repository V6.2 信息中心,获得关于计划和治理所发现的服务的详细信息。
- 浏览 Microsoft IIS 信息。
- 浏览 Oracle Technology Network,以了解关于 Oracle Application Server V10.1.3.x 的信息。
- 如何用 WSRR 实现基于生命周期的管制策略和访问控制:介绍了如何用 IBM WebSphere Service Registry and Repository (WSRR) 实现 SOA 管制的步骤。
- 使用 WebSphere Service Registry and Repository 实现和执行服务生命周期:本文提供了详细的步骤说明,介绍在 WebSphere® Service Registry and Repository 中设计、开发和加载服务生命周期的整个过程。
- IBM WebSphere Service Registry and Repository 简介,第 1 部分: WebSphere Service Registry and Repository 在 SOA 生命周期中的一天:这篇文章介绍了 IBM WebSphere Service Registry and Repository 的主要概念和功能。
- IBM WebSphere Service Registry and Repository 简介,第 2 部分: 体系结构、API 和内容:这篇文章提供 WebSphere Service Registry and Repository 及其功能的体系结构概述。其中描述了 WebSphere Service Registry and Repository 组件如何协同工作以宣传、查找、检索、管理和治理服务元数据。
- 使用 IBM WebSphere Service Registry and Repository 实现多个 UDDI 的数据同步:主要讲述如何利用 IBM WSRR 来实现多个 UDDI 之间以及 WSRR 和 UDDI 之间的数据同步。
- Hello World: WebSphere Service Registry and Repository:学习如何导航 Web 界面以发布、查找、重用和更新服务。
