ServiceMix学习之我见(3)

2019-02-16 14:38

图3 JBI插件系统

图4中间消息交换:消息序列图

2.2 规范化消息

JBI系统使用“规范化”消息。消息内包含应用信息荷载、可选的附件、以及用于请求应答双方交互的元数据。消息的规范化过程是将环境相关的信息映射为中立于环境的、抽

Page 11 of 67

象的、标准的格式,以便在JBI中传输。所有由规范化消息路由NMR处理的消息都需规范化处理。

规范化消息由如下的三个主要部分构成:

1. 2. 3.

消息内容,亦即荷载,是符合WSDL消息格式的XML文档,不包含针对传输协议或者信息格式的编码。

消息属性,或元数据,是消息携带的额外信息,可以包含安全信息、事务上下文信息、组件特定信息等。消息属性是消息上下文的第一部分。

消息附件,是由消息荷载引用的,包含在一个可以解析处理附件内容的信息处理器内。附件可以是非XML信息。附件是消息上下文的第二部分。

2.3 规范化消息路由

JBI系统内消息交换依赖于规范化消息路由NMR在服务者和消费者之间路由消息交换对象(message exchange objects)。针对应用的不同需求以及消息本身特性,NMR提供不同服务质量的消息传输服务。

NMR并不寄宿于任何一个具体的对象中,它被抽象成一套应用程序接口(API)、服务提供者接口(SPI)、组件接口等。NMR API包括: ---JBI Message API JBI消息接口 ---JBI Service API JBI服务接口

---JBI Message Exchange Factory API JBI消息交换对象工厂接口 ---Service Description SPI 服务描述接口

---Message Exchange Patterns API 消息交换模式接口 ---Endpoint Reference API 端点引用接口

2.4 JBI组件

JBI组件框架提供了可插入的接口,绑定组件和服务引擎可以通过此接口与JBI系统交互。组件框架提供了所有访问JBI服务的接口。JBI支持二种类型组件,服务引擎和绑定组件。组件可以通过以下二种方式与系统交互:

1. SPIs: 由绑定组件或服务引擎实现的接口。

2. APIs: 系统提供的,绑定组件或服务引擎可以访问的接口

Page 12 of 67

这两种组件的模型及API定义是一样的,JBI只是通过一个标记来区分这两种组件。实际上,JBI中服务引擎和绑定组件实现不同的功能。(这种区分同样适用于JBI定义的管理接口)

2.4.1 服务引擎(Service Engines)

服务引擎(SE)在JBI系统中表现为业务逻辑驱动。引擎可以编排服务的消费和提供,例如一个长时间的业务处理进程既可以提供服务同时自身也消费服务。服务引擎可以提供简单的服务,如数据转换;也可以提供复杂的路由或EDI服务如消息校勘/反校勘(collation/de-collation)。

服务引擎可以通过聚合其他服务来构造新的服务。WS-BPEL语言正是使用的这种重要的合成模式,通过多个服务构造复杂的处理过程。

服务引擎是JBI系统内的业务逻辑实现组件,可以作为服务提供者或使用者。服务引擎对服务使用和需求提供整合点。也可以提供诸如信息转换、复杂的路由、以及协调信息等功能。服务引擎根据其提供的功能可以有多种形式。特别的,一些SE可作为处理容器,为用户提供特定的开发模型,例如:

· 一个XSLT XML转换引擎可以支持多种转换形式,应用开发接口就是XSLT语言本身;

· 对于一个WS-BPEL 2.0业务处理执行引擎,应用开发接口就是WS-BPEL; · 对于一个EJB容器,API就是符合特定EJB规范的Java。

2.4.2 绑定组件(Binding Components)

绑定组件用于根据特定协议和传输器发送和接收消息。绑定组件把消息在特定于协议的格式和规格化格式之间进行转换,使JBI系统只需处理规格化消息,从而把JBI系统与特定协议分离。(注意,特定于协议的相关信息可以用规格化消息或消息交换的元数据信息表示,供服务引擎或者绑定组件使用,这些元数据信息对其他的JBI系统组件是不透明的。)

通过绑定组件,JBI系统与特定的传输协议解耦。这是通过绑定组件对消息进行相应的协议特定和协议无关的编组(marshalling)和解组(unmarshalling)而实现的,这样JBI环

Page 13 of 67

境内仅处理规范化的消息。绑定组件通过提供通信协议处理功能,使得JBI组件可以访问JBI环境以外的外部系统提供的远程服务,同时外部远程服务消费者可以访问JBI环境内部提供的服务。通信协议可以根据系统集成需求的不同而不同,典型的例子包括:

· 基于HTTP的SOAP[http://www.ws-i.org/Profiles/BasicProfile-1.1.html]; · JMS/MOM[http://jcp.org/aboutJava/communityprocess/final/jsr914/index.html] · AS1/AS2 EDI [http://www.ietf.org/html.charters/ediint-charter.html]通信协议栈。 一个绑定组件可能会选择实现一种或多种通信协议,提供到SE的连通性服务,使SE把它们的服务发布给远程消费者,同时它们也消费远程服务。

2.5

规范化消息交换

JBI首要用途是在组件间路由规范化消息。消息传输时处于规范化形式。

绑定组件必须将特定于协议(传输层)的消息转换为规范化形式。 绑定组件和服务引擎通过传输通道与NMR通信,传输通道提供消息的双向传输机制。

一个JBI系统外服务使用者通过特定协议/传输层发送服务请求到绑定组件。绑定组件转换请求消息为规范化消息,构造一个称为消息交换(message exchange)的消息包, 然后通过传输通道传输到NMR,再由NMR路由到服务提供者。

当所使用的服务引擎或绑定组件收到消息后,创建相应的规范化消息,将此规范化消息填充到一个新的MessageExchange实例中,并传输到目标ServiceEndPoint实例处。服务端点获得消息交换对象后,恢复规范化消息为协议/传输特定格式,然后将消息传输到外部服务提供者。

JBI系统的首要功能是将规格化消息交换(ME)从一个组件路由到另一个组件。交换的消息使用一种规格化的形式。

Page 14 of 67

绑定组件必须将绑定的消息(特定协议和传输格式的消息)转换成规格化形式。绑定组件和服务引擎通过传输通道(Delivery Channel[DC])与NMR交互,传输通道为消息的接收和分发提供了双向传输的契约。

图5外部服务消费者消息处理视图

如图所示,一个外部服务消费者通过特定协议和传输器发送一个服务请求到绑定组件,绑定组件将请求转换成规格化消息。然后,绑定组件根据NM构建消息交换(Message Exchange[ME] 是WSDL消息交换模型中各种简单消息交换模式中消息的容器),绑定组件设定描述将要执行的服务和操作的元数据信息,最后,在步骤2中,绑定组件将消息交换通过传输通道(DC)发送给NMR,NMR将消息交换分发到服务提供者。

上述过程中,由NMR选择合适的服务提供者,然后把消息交换(ME)路由到合适的服务提供者。服务提供者必须从传输通道中主动接收(pull)消息交换。

相反的操作图6所示,只在绑定组件处与图5有少许不同。

Page 15 of 67


ServiceMix学习之我见(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:购买土方招标文件

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: