WebSphere Enterprise Service Bus V7 的新特性

本文描述了 WebSphere ESB V7 中的新增特性及其相关的工具 WebSphere Integration Developer,其中包括传输协议绑定、中介原语和策略控制。

Callum Jackson, 软件工程师, EMC

Callum Jackson 的照片Callum Jackson 是英国 IBM Hursley Software Lab 的 WebSphere ESB 团队的一名软件工程师。他自 2005 年加入 WebSphere ESB 团队,在那之前他从事电信行业 SOA 应用程序的软件服务。



2010 年 7 月 12 日 (最初于 2010 年 5 月 05 日)

简介

通过管理流动在不同服务之间的请求和响应,IBM® WebSphere® 企业服务总线(以下简称为 WebSphere ESB)可实现不同系统的集成。中介模块(mediation module)在 WebSphere Integration Developer 中创建,它封装要在 WebSphere ESB 运行时内部署的服务交互逻辑。在中介模块内,根据定义消息流逻辑的一个或多个中介原语,可以将消息增强、转换、记录和传送到不同的服务提供者。消息本身以一种称为服务消息对象(Service Message Object,SMO)的逻辑结构表示。要获得更多关于 WebSphere ESB 体系结构的信息,请参阅位于本文底部的 参考资料

本文将不会对 WebSphere ESB V7 的每一个新特性和功能进行逐一介绍,也不会深入描述这些特性。本文将会介绍 WebSphere ESB V7 的一些新特性,包括增强的传输绑定、中介原语、中介模式和策略控制。要从本文中获益,您应当具有一定的 WebSphere ESB 经验以及关于其特性和功能的基本技术知识。要获得有关 WebSphere ESB V6.2 新特性的汇总,请参阅 WebSphere ESB V6.2 的新特性

新的传输协议支持

在 WebSphere ESB 中,您可以通过导入调用现有服务,而使用导出将中介模块公开给外部应用程序。导入和导出可以与传输特定的协议绑定相关联,在 V7 以前的版本中,支持绑定包括 Web 服务、WebSphere MQ、Java™ Message Service (JMS)、WebSphere MQ JMS、HTTP 或服务组件体系结构(Service Component Architecture,SCA)。

EJB 绑定

在 V7 中,增强的 EJB 绑定为 EJB 导出以及已受支持的 EJB 导入提供支持。在您选择导出并生成绑定时,您将看到选项的完整列表,其中包括 EJB 绑定:

图 1. EJB 导出绑定
EJB 导出绑定

新的选项包括 EJB 绑定应该选择 EJB 2.1 还是 EJB 3.0 兼容的能力。此外,您可以决定是否公开 EJB 作为本地 EJB、远程 EJB 或二者兼有。一个向导将指导您完成整个过程,如下图所示:

图 2. EJB 导出绑定配置
EJB 导出绑定配置

消息绑定

JMS 和 WebSphere MQ 的消息绑定已有多项改进:

  • 失败事件管理器支持 — WebSphere ESB V6.2 引入了失败事件管理器,使异步发送的失败消息能够得到集中处理和管理。在 V6.2 中 JMS 绑定支持失败事件管理器,且在 V7 中增强了这种支持以便包括 WebSphere MQ 绑定。
  • 动态响应目的地 — JMS 绑定有内置功能以动态生成新的目的地队列来接收响应消息,这会在决定采用哪种设计方法时给您额外的灵活性。
  • WebSphere MQ 资源适配器支持 — 增强的 WebSphere MQ 绑定包括对 WebSphere MQ 资源适配器的支持,以便您可以利用已改进的故障转移和负载平衡支持。

新增的中介原语支持

在 WebSphere ESB 中,中介的核心处理发生在中介流组件内,且被分成每个操作的中介流。这些流包含一些绑在一起的预建中介原语,用于完成所需处理。本部分描述的是 WebSphere ESB V7 中增强的预建中介原语。

Flow Order 原语

V7 已经引人了 Flow Order 原语,以使确定性分支能够在中介流内启动逻辑。在 V7 以前,如果您想为中介流设置分支,这些分支的执行顺序是非确定性的。通过为每个分支创建独立终端并单线连接到每一个分支,Flow Order 原语允许您定制分支逻辑。如下图所示:

图 3. Flow Order 中介原语
Flow Order 中介原语

Gateway Endpoint Lookup 原语

WebSphere ESB V6.2 引入了服务网关功能,且作为部分连续驱动为服务网关模式提供一流的支持,在服务网关中,已添加的新原语专用于路由模式。此原语专注于 Web 服务端点解决方案且有三种不同的操作模式:

  • URL — 当惟一标识符在 URL 尾部可用时使用,用于提供服务标识信息,该信息可作为令牌来确定要将消息转发到的端点地址。在这种操作模式下,配置数据存储在内置的配置存储区内(有关这种模式的更多信息,请参阅下面的 “代理网关” 部分)。
  • XPath — 允许您指定一个 XPath 表达式,在使用网关的所有服务中分解为一个惟一标识符。然后您可以使用这个标识符作为令牌来确定要将消息转发到的端点地址。在这种操作模式下,配置数据存储在内置存储区内(有关这种模式的更多信息,请参阅下面的 “代理网关” 部分)。
  • 操作 — 每个 Web 服务请求都有一个指定的 SOAPAction 值,如果被启用,则是一个 Web 服务寻址(WS-Addressing)操作值。根据规范,该值应该是 “唯一并模糊地识别该消息所蕴含的语义的一个标识符”。对于通过原语传送的每个消息,操作值的确定均来自 ServiceMessageObject,并且对 WebSphere Service Registry and Repository 进行查询以查找具有相同操作值的 WSDL 端口。与 Endpoint Lookup 原语类似,您可以为这种模式的查找指定用户定义的属性和分类。
图 4. Gateway Endpoint Lookup 原语
Gateway Endpoint Lookup 原语

默认情况下,原语在 URL 模式下配置且无需额外配置。然而通常应该指定代理组,如下所述。如果需要 XPath 模式,除代理组配置以外还必须包含 XPath 表达式。最后,如果需要动作,与 WebSphere Service Registry and Repository(以下简称 WSRR)的通信是先决条件,因此如果默认值是不能接受的,则必须指定 WSRR 实例名称。

一般情况下,在动态或静态服务网关内使用基于动作的路由,URL 和 XPath 模式仅在代理网关模式下使用,如下所述。无论所使用的查找方法是什么,ServiceMessageObject 内的目标、备用地址和端点查找上下文都会被填充到查找结果中。

Message Validator 原语

Message Validator 原语允许您针对架构信息验证整个或部分服务消息对象。除了对接口架构的验证以外,如果任何断言已经通过原语(如 SetMessageType 原语)产生,那么也要对这些断言进行验证。在图 5 的示例中,消息在转化之前经验证。如果验证失败,则该流将无法阻止任何下游失败。

图 5. Message Validator 原语
Message Validator 原语

Policy Resolution 原语

在引入中介策略之前,中介流仅能通过使用提升的属性控制。从中介流提升的任何属性都在管理控制台上可见且可供变更,以便变更流配置。任何对于这些提升的属性的变更都会影响所有引用属性的流,在已部署的应用程序内变更是永久的,直到该值在管理控制台上被再次改变。在 WebSphere ESB V6.2 中,任何可提升的属性都可通过中介策略进行动态更新,但任何通过策略控制影响的变更仅有当前流调用的生存期。

可将提升的属性看作是任何中介流内的变化点,使用中介策略定义在这些变化点上使用的值。中介策略使用 WS-Policy 格式,且在提升的属性上有一个简单的映射,即 WS-Policy 中使用的概念与那些通过 WebSphere ESB 定义的概念之间的映射。该功能支持创建随正在处理的消息内容而变化的单一中介流。

在 WebSphere ESB V6.2 中,中介策略文档只附属于 WSRR 中的 SCA 模块表示形式。WebSphere ESB V7 的新增特性能够扩展这种附加中介策略文档的支持到目标服务,支持基于转发请求服务对中介流进行定制。Policy Resolution 原语现在有三种操作模式:

  • 模块 – 默认设置和与 V6.2 中相同的逻辑。
  • 目标服务 – 基于 ServiceMessageObject 中指定的目标服务信息查找 WSRR 中的中介策略的能力(通过 Endpoint Lookup 原语自动填充)。
  • 模块与目标服务的交叉 – 这种模式能够查询与模块和目标服务相关的中介策略信息的 WSRR。只有在中介策略符合以上两种级别时此查询才会成功,使流能够从模块和目标服务模式中寻求策略的一致性。

这些选项如下:

图 6. Policy Resolution 原语
Policy Resolution 原语

要获得更多关于目标服务和模块模式的中介策略支持解决方法,请参阅位于本文底部的 参考资料

SLA Check 原语

在 WSRR V7 中,Governance Enablement Profile 为服务级别协议(Service Level Agreements)提供新的功能,这可以在客户端、中介和服务(在 WebSphere ESB 术语中)之间启用协议的创建。该协议表达式如下所示:

图 7. SLA 类图
SLA 类图
  • 服务级别定义(Service Level Definition,SLD)— 提供服务质量的正式规范,用于发送消息给服务并引用网络可寻址端点。
  • 服务版本 — 为功能性和非功能性规范提供引用相关 SLD 的服务功能的正式声明。每个服务版本可能都有一个消费者标识符,该标识符在服务充当其他服务上的客户端时使用。
  • 服务级别协议(Service Level Agreement,SLA)— 对特定服务版本可能在其他已定义服务上含有的依赖项提供正式规范。这些依赖项表示为依赖于 SLDs 的一个 SLA。多个 SLA 可能与单一服务版本相关联,因此一个 contextId 可能与每个 SLA 都相关联,以选择所需的 SLA。

在 WebSphere ESB 中,在客户端、中介和供应商之间有三种模式。以下红色部分强调的是通过 SLA 原语发送到 WSRR 的数据:

图 8. 客户端与中介之间的 SLA
客户端与中介之间的 SLA
图 9. 客户端与提供者之间的 SLA
客户端与提供者之间的 SLA
图 10. 中介与提供者之间的 SLA
中介与提供者之间的 SLA

SLA 中介原语允许您定义 SLA 检查表达式,该表达式必须包括一个端点,可以选择性包含一个上下文和/或消费者 ID。最终设置是注册表名称,用以识别哪个 WSRR 应该用于评估 SLA 检查。

图 11. SLA 中介原语面板
SLA Mediation 原语面板

Trace 原语

在中介流开发期间,发布一个跟踪消息到文件会很有用 — 标准 WebSphere ESB SystemOut.log 文件或另行指定的文件。为了启用这个功能,新的 Trace 中介原语已经被添加到 WebSphere ESB V7 中。该原语有大量属性,如下图所示:

图 12. Trace 中介原语面板
Trace 中介原语面板
  • Enabled – 类似于其他原语,提供启用或禁用原语功能的能力。这是一个可提升的属性。
  • Destination — 指定添加跟踪声明的位置,即 Local Server Log (SystemOut.log)、User Trace (UserTrace.log) 或 File (User-defined)。
  • File Path — 在目标字段被指定为文件时,指定跟踪文件的位置。
  • Message — 定义应该被跟踪的消息格式:{0} = 时间戳、{1} = 消息 ID、{2} = 中介名、{3} = 模块名、{4} = 通过根属性定义的消息、{5} = SMO 的版本
  • Root path — 识别应该将 SMO 哪部分序列化到消息中的 XPath 表达式。也包括附加说明文本。

这个新原语的实现增强和简化了现有跟踪机制,且预计不会在更适合现有 MessageLogger 或 EventEmitter 原语的生产系统中使用,这些都是值得的。

UDDI 原语

统一描述、发现和集成(Universal Description Discovery and Integration,UDDI)是在网络内发布和发现服务描述的标准。下面将要解释 WSDL 与 UDDI 概念之间的映射,以便澄清 WebSphere ESB V7 提供的集成。有关 UDDI 的更多信息,请参阅位于本文底部的 参考资料

  • BusinessEntity – 提供关于业务的信息且包含一个或多个 BusinessServices。
  • BusinessService – 包含 Web 服务的技术和业务描述,类似于 WSDL 服务。
  • BindingTemplate – 类似于 WSDL 端口。
  • tModel – 定义服务的技术规范。虽然与 WSDL 部分没有直接关联,但是源自其服务接口部分。

UDDI 原语为与 UDDI 存储库(如 WebSphere Application Server UDDI)的集成提供一流的支持。细节部分描述对 UDDI 注册表名称及其相关查询信息的配置。如果查找成功,则有关 SMO 的头和上下文部分会被更新,这类似于 Endpoint Lookup 原语。这里有三种可能的匹配策略:

  • 返回第一个匹配端点并设置路由目标 — 目标地址被填充进头部分,且与这个端点相关联的相关注册表信息被填充进 Endpoint Lookup 上下文。
  • 返回所有匹配端点 — 虽然所有返回的端点信息都被填充进 Endpoint Lookup 上下文,但是没有目标地址被填充进 SMO 头部分。
  • 返回所有匹配端点并设置备用路由目标 — 这类似于上面的情况,但是 SMO 头的目标和其他部分都被填充。

Fail 原语增强

在 V7 中,Fail 原语已经增强,除以前可用的静态字段之外,现在还支持动态消息生成。现在您可以使用以下的替代值来指定错误消息:

  • {0} – 时间戳值
  • {1} – SMO Message ID 值
  • {2} – 中介名值
  • {3} – 模块名值
  • {4} – 在 Root Filed 字段内指定的 SMO 序列化部分
  • {5} – SMO 版本值

这些设置如下所示:

图 13. Fail 原语面板
Fail 原语面板

WSRR Query API

在 WebSphere ESB V7 以前,只有两个内置机制与 WSRR 通信,它们是 Endpoint Lookup 和 Policy Resolution 原语。WebSphere ESB V7 中引入了新的查询 API,它允许您在自定义中介内创建定制查询并将其提交给 WSRR,同时利用内置缓存机制。要获得一个与 WSRR 交互的完整 API 指南,请参阅 WebSphere ESB 信息中心

Endpoint Lookup 原语增强

以前,Endpoint Lookup 原语支持 Web 服务端点和 SCA 导出。现在,WebSphere ESB V7 添加了对以下协议的支持:

  • MQ 端点
  • JMS(SIB、MQ 和通用)端点
  • 基于 SCA 的端点:MQ、JMS、Web 服务、SCA 和 HTTP
  • HTTP 端点

在原语中的新支持让您可以查询单一协议、所有协议或 Web 服务和 SCA 端点的现有行为,如下图所示:

图 14. Endpoint Lookup 原语面板
Endpoint Lookup 原语面板

WebSphere ESB 的业务空间支持

业务空间是一个基于 Web 的接口,允许您控制和管理安装在系统上的应用程序。主要用户是那些想管理已安装应用程序的 IT 和解决方案管理员。它被引入到 WebSphere ESB V6.2 中并让您可以查看已部署的 SCA 模块。在 V7 中,已经扩展的功能包括管理中介策略和代理网关。

代理网关支持

WebSphere ESB V6.2 支持服务网关的创建, 在创建大量可能的网关模式时提供了巨大的灵活性。这种灵活性对增加解决方案的开发时间有副作用。WebSphere ESB V7 引入一种被称为代理网关的新模式,以提供一种更快的开箱即用体验。代理网关允许您创建带有内置路由的 WebService 服务网关,以及可用于客户端生成的已解析 WSDL。这里是一个新代理网关的概念图:

图 15. 代理网关
代理网关

一些已经被识别的服务提供者将通过网关公开,他们被逻辑地分成代理组,该代理组是一个服务集合。在代理网关开发期间,可建立链接到一个或多个代理组中。对于代理组内的每一个服务,相应的虚拟服务可在代理网关上公开,这样就可以将服务请求从虚拟服务自动路由到现实服务,在中介流组件内完成任何网关逻辑。

一旦在 WebSphere Integration Developer 中开发出代理网关并在运行时安装了该网关,IT/解决方案管理员就可以登录业务空间并查看代理网关、代理组和虚拟服务之间的关系。图 16 显示代理网关小部件,其初步加载显示了代理组和相关的代理网关:

图 16. 显示代理组与代理网关之间关系的代理网关 BusinessSpace 小部件
显示代理组和代理网关之间关系的代理网关 BusinessSpace 小部件

在代理组 pencil 上单击转换小部件,以显示与代理组关联的虚拟服务,如下图所示:

图 17. 在代理组内显示虚拟服务的代理网关 BusinessSpace 小部件
在代理组内显示虚拟服务的代理网关 BusinessSpace 小部件

中介策略支持

在业务空间内支持中介策略之后,就无需通过 WSRR 控制台创建和删除中介策略。业务空间有三个相关的小部件:

  • 服务浏览器 – 允许您查看导入到 WSRR 的服务。这些服务可以有附加的中介策略,稍后会通过运行时执行。
  • 模块浏览器 – 允许您查看已经在 WebSphere ESB 系统上安装的模块。
  • 中介策略管理 – 一旦在相应小部件(模块浏览器或服务浏览器)上选择了服务或模块,相关的中介策略将会显示在中介策略管理小部件上。除了查看中介策略,您也可以创建和删除策略。

在使用 WSRR 控制台时,这些新的小部件提供专用接口,此专用接口可删除许多以前需要的通用 WS-Policy 步骤。接口用户在定义中介策略时不需要对 WS-Policy 规范有太多了解。

图 18. 模块浏览器 BusinessSpace 小部件
模块浏览器 BusinessSpace 小部件
图 19. 服务浏览器 BusinessSpace 小部件
服务浏览器 BusinessSpace 小部件
图 20. 中介策略管理 BusinessSpace 小部件
中介策略管理 BusinessSpace 小部件

管理和监控扩展

本部分描述 WebSphere ESB V7 上增强管理和监控特性的新功能。

业务空间内的服务监控

BusinessSpace 内的服务监控小部件为 SCA 模块调用和公开的服务度量响应时间和请求吞吐量。您可选择一些操作来监控公开给请求方(导出)并将其使用掉(导入)的服务,您可以选择为响应时间和吞吐量定义阈值,从而为 SCA 模块提供强大的开箱即用监控功能。这里提供了一个输出示例:

图 21. BusinessSpace 内的服务监控小部件
BusinessSpace 内的服务监控小部件

此外,对于负载的多 SCA 模块解决方案,这种功能会帮助您确定哪部分解决方案将消耗大部分时间。

业务空间内的健康和问题确定

管理解决方案的一个不可或缺的部分就是跟踪整个系统的健康状况,以及模块中管理项目的健康状况,如队列、消息引擎、数据源、服务器和集群。模块和系统健康小部件提供单一接口来快速检查解决方案的状态,以便验证以下信息:

  • 哪些应用程序正在运行
  • 拓扑内哪些服务器被启动、停止或不可用
  • 已定义的队列最大深度以及与该最大值的接近程度
  • 哪些消息传送引擎项目正在运行
  • 模块中任何失败的事件
图 22. BusinessSpace 内的系统健康小部件
BusinessSpace 内的系统健康小部件

跨组件跟踪

跨组件跟踪允许您通过 SCA 模块和组件跟踪消息。它添加了通过 WebSphere Integration Developer 中的查看器解析的标准输出跟踪语句。WebSphere ESB V7 中的这个新增特性能够通过单个原语跟踪消息的进度而不是简单地停留在中介组件级别。下面是一个示例:

图 23. 跨组件跟踪
跨组件跟踪

事件排序

在 WebSphere ESB V7 以前,事件排序仅限于 WebSphere Process Server 运行时,但是在 V7 中,事件排序包括在 WebSphere ESB V7 运行时中。事件排序能使 WebSphere ESB 组件按交付顺序处理经过异步调用的事件。在整个方案中都保持事件顺序。对于一些实现,您可以要求目标组件按源应用程序发送事件的相同顺序处理事件;不按顺序处理这些事件会导致错误或异常。在这些情况下,您可以对异步导出和 SCA 组件启用事件排序来实现这些功能。

图 24. 启用事件排序
启用事件排序

参考资料

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=500029
ArticleTitle=WebSphere Enterprise Service Bus V7 的新特性
publish-date=07122010