级别: 初级 Saravana R Chandran (sarachan@us.ibm.com), 高级软件顾问, IBM Software Services for WebSphere
2006 年 12 月 12 日 本文概述 IBM ® WebSphere® Application Server V6.1 在 Web 服务方面的新特性和增强,包括对 Web 服务业务活动 (WS-Business Activity)、Web 服务通知 (WS-Notification)、WS-I 基本安全概要 (WS-I Basic Security Profile) 和 Web 服务资源框架 (WS-Resource Framework) 规范的支持。
引言
除了 Version 6.0.x 中引入的 Web 服务特性外,WebSphere Application Server V6.1 还提供了对以下特性的支持:
WebSphere Application Server V6.1 还为 Web 服务安全性提供了增强的性能,即支持保护密钥或提高加密速度的硬件加密设备。若干现有的 Web 服务特性已得到增强,包括:
- 解析器增强
- SAAJ 1.2 性能增强
- 对 JMS Server 连接缓存的客户机支持
-
对 Web 服务寻址 (WS-Addressing) 的增强支持。
图 1 显示了 WebSphere Application Server V6 中引入的 Web 服务特性,以及 V6.1 中可用的其他特性。
图 1. WebSphere Application Server V6 和 V6.1 中的 Web 服务特性
下面几个部分将会就 WebSphere Application Server V6.1 讨论每个新的 Web 服务特性。
Web 服务事务 (WS-Transaction)
WS-Transaction(请参见参考资料以了解具体规范)
是由 IBM、BEA Systems、Microsoft® 和其他供应商开发的标准,它描述了与 WS-Coordination 规范中所描述的可扩展框架结合使用的协调类型。WS-Transaction 定义了两种协调类型:
- WS-AtomicTransaction
- WS-BusinessActivity
并涉及三个单独的规范:
- WS-Coordination
- WS-AtomicTransaction
- WS-BusinessActivity。
图 2 演示了这些规范与 WS-Transaction 之间的关系。
图 2. WS-Transaction 规范
WS-Coordination
从 Version 6.0 开始,WebSphere Application Server 支持 WS-Coordination 规范,该规范描述了一个可扩展的框架,用于提供协调分布式应用程序操作的协议。这些协调协议用于支持许多应用程序,包括那些必须就分布式活动的结果达成一致的应用程序。可在此框架中定义的协调协议能够适应广泛的活动,包括用于简单的短期操作的协议和用于复杂的长期业务活动的协议。
WS- AtomicTransaction (WS-AT)
也是从 Version 6.0 开始,WebSphere Application Server 支持 WS-AtomicTransaction 规范,此规范引用基于 WS-Coordination 的原子事务协调类型,并定义了原子事务上下文及其用途。原子事务一般持续时间较短,通常要求参与者之间具有很高级别的信任。WS-AT 规范定义了使现有事务处理系统能够包装它们的专有协议并跨不同硬件和软件供应商互操作的协议。
WebSphere Application Server V6.0 实现了 WS-AT 规范,使得 Web 服务应用程序能够参与跨各种 Web 服务环境分布的全局事务。
作为事务管理器,WebSphere Application Server 支持资源管理器通过它们的 XAResource 接口进行协调,并使用支持 WS-AT 的事务管理器来参与分布式全局事务。WS-AT 是两阶段提交事务,仅适合于微型事务(短期运行)。最佳做法是在单一的企业中使用 WS-AT,从而避免跨企业域的 WS-AT 使用。从开发的角度看,除了在部署描述符中进行相关指定(通过启用 Send Web Services Atomic Transactions on Requests)以外,对 Web 服务利用 WS-AT 并不需要任何特定的开发任务。WebSphere Application Server 运行时负责注册 WS-AT 参与者,方式与在 JTA 事务(WS-AT 事务与之联合)中注册 XA 资源相同。
WS-Business Activity (WS-BA)
作为 Version 6.1 中的新特性,WebSphere Application Server 支持 WS-BusinessActivity 规范。业务活动是联系在一起以实现某个复杂结果的任务集合。与原子事务不同,以原子方式回滚诸如发送电子邮件之类的活动可能非常困难或者根本不可能,因此在一个或多个任务中发生错误时将需要某种补偿过程。
该补偿支持模式与 IBM WebSphere Process Server Business Process Choreography 补偿类似。WebSphere Application Server V6.1 通过防火墙支持补偿以及 WS-AT 和 WS-BA 上下文传播。
WebSphere Application Server 中的 WS-BA 支持使得不同系统上的 Web 服务能够协调比原子事务耦合得更松散的活动。WS-BA 使得此类工作能够以两阶段进行处理(待完成和以后补偿),并且还支持对一阶段工作的补偿。WS-BA 可以跨不同平台/体系结构/实现协调某个补偿模式,并且可以在不同的传输机制上使用,例如 HTTP、JMS 和 IIOP(在 WebSphere Application Server 对 WebSphere Application Server 的情况下)。业务活动的范围 (BAScope) 与 WebSphere Application Server 工作单元具有一对一的关系。
除了 Web 服务中的 WS-BA 支持外,WebSphere Application Server 还使用容器管理的事务来支持 EJB 组件中的 WS-BA。IBM Rational® Application Developer 和 Application Server Tool Kit 都提供了 WS-BA 工具支持。
启用 WS-BA
缺省情况下,WS-BA 在 WebSphere Application Server V6.1 中是禁用的,因此需要作为 IT 拓扑和应用程序服务器规划过程的一部分来启用它,然后才能利用该规范。每个参与应用程序都需要实现一个补偿处理程序接口。需要创建该接口,WS-BA 应用程序组件才能引用它,然后才能在运行时执行。然后需要使用 Rational Application Developer 或 Application Server Tool Kit 来设置部署描述符中的补偿处理程序类,从而对每个应用程序进行配置。
图 3. 启用 WS-BA
若要启用 WS-BA,请执行以下操作:
在 WebSphere Application Server 6.1 管理控制台中,选择“Servers” => “Application servers” => “server_name” => “[Container Settings] Container Services” => “Compensation Service”。选择“Enable service at server startup”,然后重新启动所有服务器以使更改生效。(图 4)
图 4. 在服务器启动时启用服务
创建一个实现 com.ibm.websphere.wsba.CompensationHandler 接口的新 Java 类。实现新的补偿处理程序对象上的 close 和 compensate 方法,以根据将在调用该处理程序时传递给它的 SDO(服务数据对象)数据执行适当的操作。
打开 Application Server Toolkit 或 Rational Application Developer 的应用程序组件。在部署描述符查看器中打开该应用程序组件的部署描述符。滚动到 Compensation 部分并选择 Run EJB methods under a BusinessActivity scope。在“Compensation handler class”文本字段中,键入您在前面创建的补偿处理程序类的完全限定类名称,然后“保存 (Save)”部署描述符。(图 5)
图 5. 在 BusinessActivity 范围内运行 EJB 方法
构建该应用程序,包括应用程序组件和补偿处理程序。如果该应用程序是 Web 服务,则该应用程序必须与 JSR 109 标准兼容。将该应用程序部署到支持业务活动的应用程序服务器上。
WS-Notification
 | | WS-Notification 是由 IBM、Akamai Technologies、Globus Alliance、Hewlett-Packard、SAP、Sonic 和 Tibco 制定的标准,已提交到 OASIS 以待批准,并且已经发布了一个工作草案文档。有关更多信息和实际规范,请参见参考资料。 |
|
作为 Version 6.1 中的新特性,WS-Notification 为 Web 服务使用通知(或发布/订阅)模式进行交互定义了标准化方法。在该模式中,Web 服务(或其他实体)向一组其他 Web 服务分发信息,而无需预先了解其他那些 Web 服务。
WS-Notification 由 WS-BaseNotification、WS-BrokeredNotification 和 WS-Topics 规范组成。WebSphere Application Server V6.1 在 WS-Notification 级别提供支持。图 6 显示了这三个规范相对于 WS-Notification 的关系。
图 6. WS-Notification
WS-Notification 规范所固有的术语如下:
-
NotificationProducer——希望将事件通知插入系统的 Web 服务。
-
NotificationConsumer——从某个 NotificationProducer 接收 NotificationMessage 的 Web 服务。
-
SubscriptionManager——实现与 SubscriptionManager 接口关联的消息交换的 Web 服务。
-
PullPoint 接口——定义一个端点,该端点积累通知消息并使得请求者能够检索积累的通知消息。
WebSphere Application Server 以下列方式支持 WS-Notification:
WS-BaseNotification 同时为 NotificationProducer 和 NotificationConsumer Web 服务定义了应用程序端口类型。WebSphere Application Server V6.1 为 WS-BaseNotification 规范提供了 NotificationProducer、NotificationConsumer、SubscriptionManager 和 PullPoint 支持。
WS-BrokeredNotification 定义中介 NotificationBroker 如何负责将一个或多个发布者产生的消息分发到零个或多个使用者。WebSphere Application Server V6.1 为基于需求的 WS-BrokeredNotification 发布提供了 NotificationBroker 支持,此支持扩展了 NotificationProducer 与 NotificationConsumer 对和 RegisterPublisher 与 PublisherRegistrationManager 对。(请参见参考资料)。
WS-Topics 规范定义了 NotificationProducer 能够将其消息关联到的主题。WebSphere Application Server V6.1 支持三种表达式方言:简单、具体和完整(表 1)。
表 1. 表达式方言
| 方言 |
主题限制
|
通配符限制
| 示例 |
|---|
|
简单
|
无主题层次结构
|
无通配符
|
Ex – tns1:company
| |
具体
|
允许主题层次结构
|
无通配符
|
Ex – tns1:company/IBM
| |
完整
|
允许主题层次结构
|
允许通配符
|
Ex – tns1:Company/*/Brand
|
配置 WS-Notification
您可以通过管理控制台或使用 wsadmin 脚本来配置 WS-Notification。对于简单情况,您需要在“WebSphere Application Server V6.1 administration”的“Service Integration Bus”部分配置五个基本配置资源。记住,配置资源随使用模式和拓扑而异。在如图 7 所示的简单情况中,需要以层次结构方式来对配置资源进行配置。
图 7. WS-Notification 配置资源
在总线上定义 WS-Notification 服务表明了要向 WS-Notification 应用程序提供部分或全部总线资源访问的意图。可以在一个服务集成总线上定义一个或多个 WS-Notification 服务。
创建 WS-Notification 服务点将指示服务器运行时公开所选服务器(即 WS-Notification 应用程序能够通过它来与 NotificationBroker 交互的该服务器)上的 Web 服务端点。管理员能够为给定的 WS-Notification 服务定义任何数量的 WS-Notification 服务点。
永久的主题名称空间要求管理员作为配置设置的一部分,静态地定义 WS-Notification 主题名称空间 URI 与服务集成总线主题空间 (topic space) 目标之间的关联。
所管理的订阅者包含应用程序 NotificationProducer 或 NotificationBroker 端点的名称,以及 WS-Notification 服务点应该作为服务器启动过程的一部分来注册的订阅请求详细信息(即主题、选择器等等)。
WS-Interoperability 基本安全概要
Web 服务互操作性组织 (Web Services Interoperability Organization) 是专门为促进不同供应商产品之间的 Web 服务互操作性和澄清各种标准和标准机构之间的差距和分歧而设立的。它阐明了概要的概念以解决该问题和降低复杂性。概要包含有关应该如何结合使用相关 Web 服务规范来实现最佳互操作性的实现指导原则。
WS-I 基本概要从 Version 1.1 起已划分为两个单独的概要。与 WS-I 基本概要 V1.1 的一致性加上与简单 SOAP 绑定概要 (Simple SOAP Binding Profile) V1.0 的一致性,大致等效于与 WS-I 基本概要 V1.0 加上已发布勘误的组合一致性声明。
WS-I 基本概要以下面的开放标准集为基础:
- SOAP V1.1
- WSDL V1.1
- UDDI V2.0
- XML V1.0(第二版)
- XML 模式,第 1 部分:结构
- XML 模式,第 2 部分:数据类型
- RFC2246:Transport Layer Security (TLS) Protocol V1.0
- RFC2459: Internet X.509 Public Key Infrastructure Certificate and CRL Profile
- RFC2616:HyperText Transfer Protocol V1.1
- RFC2818:HTTP over TLS
- RFC2965:HTTP State Management Mechanism
- Secure Sockets Layer (SSL) Protocol V3.0.
除了 WS-I 基本概要支持,WebSphere Application Server V6.1 还支持 WS-I 基本安全概要 (Basic Security Profile, BSP) 1.0,后者通过为一组非专有 Web 服务规范提供说明和扩充来促进互操作性。BSP 是基本概要的扩展概要,意味着它与基本概要一致,但是提供了附加功能,例如在需要时为基本概要添加一致的安全特性。
作为基本概要的扩展,BSP 旨在支持以可互操作的方式向 SOAP 消息添加安全功能。基本安全概要包含有关 SOAP 信封内容(或基本概要 1.0 中的 SOAP 消息格式)的要求。您可以使用 Application Server Tool Kit 组装工具来实现 BSP 遵从性。
WS-Resource Framework
Web Services Resource Framework 定义了使用 Web 服务来访问有状态资源的规范。这些规范包括:
- WS-ResourceProperties
- WS-ResourceLifetime
- WS-BaseFaults
- WS-ServiceGroup.
图 8 显示了所有这四个规范相对于 WS-Resource Framework 的关系。
图 8. WS-Resource Framework
 | | WS-Resources 是由 IBM、Globus Alliance 和 Hewlett-Packard 开发的标准。有关更多信息和实际规范,请参见参考资料。 |
|
在 Web 服务交互涉及到有状态资源(如购物车、打印机、打印作业等等)的情况下,WS-Resource Framework 是必需的。
WS-ResourceProperties
WS-ResourceProperties 定义:
- 用于对资源状态元素建模的 XML 模式的用法
- 资源状态模型与 WSDL 端口类型的关联
- 操作
- 在状态更改时使用 WS-Notification 来进行订阅的标准机制。
图 9 解释了 WS-ResourcesProperties 中定义的操作。
图 9. WS-ResourceProperties
WS-ResourceLifeTime
WS-ResourceLifeTime 定义:
- 同步销毁操作(立即)
- 基于事件的销毁操作(计划)
- 资源属性(当前时间和终止时间)
- 资源终止时的通知。
简而言之,该规范清楚地定义了如何销毁 WS-Resources。图 10 显示了 WS- ResourceLifeTime 中定义的操作。
图 10. WS-ResourceLifeTime
WS-BaseFaults
WS-BaseFaults 定义
图 11 显示了 WS-BaseFaults 中定义的操作。
图 11. WS-BaseFaults
端点引用(End point reference,EPR)和服务质量
WebSphere Application Server 支持三种级别的服务质量:
- 工作负载平衡的端点引用 ()
- 无保障的端点引用(Fragile end point reference)
- 高度可用的端点引用()
在工作负载平衡的端点引用 (EPR) 情况下,请求在集群中的服务器之间进行负载平衡。当没有缓存的易变状态并且状态在整个集群中平等地可用时,工作负载平衡的端点引用将非常有用。图 12 显示了 Web 服务客户机与集群中的 EPR 之间的交互。
图 12. Web 服务客户机和集群中的端点引用
在无保障的EPR的情况下,EPR根据server affinity的特性被创建在某个server上。在存在高度易变的状态和涉及缓存的情况下,无保障的 EPR 将非常有用。图 13 显示了 Web 服务客户机与某个服务器中的 EPR 之间的交互。
图 13. Web 服务客户机和某个服务器中的端点引用
在高度可用的 EPR 情况下,端点具有服务器关联性,并且能够进行故障转移。在Web 服务资源状态由有状态的会话 Bean 维护并且启用了 WebSphere Application Server 的有状态会话 Bean 故障转移的情况下,高度可用的 EPR 将非常有用。图 14 显示了 Web 服务客户机与集群中高度可用的 EPR 之间的交互。
图 14. Web 服务客户机和高度可用的端点引用
结束语
本文谈到了 WebSphere Application Server V6.1 中的几个新的 Web 服务特性和增强,并就这个新版本讨论了有关 WS-Business Activity、WS-Notification、WS-I Basic Security Profile 和 WS-Resource Framework 规范的详细信息。该版本支持许多新的 Web 服务特性,并提供了许多在应用程序中利用 Web 服务的方法。
致谢
非常感谢我的同事 Arnauld Desprets、Hanumanth Kanthi 和 Larry Feuer 为准备本文所做的工作。
参考资料
关于作者  | |  | Saravana R Chandran 是 IBM Software Services for WebSphere 的高级顾问。Chandran 协助客户使用 WebSphere 系列产品来开发和部署应用程序。您可以通过 sarachan@us.ibm.com 与 Chandran 联系。 |
对本文的评价
|