ESB消息传输的最低要求
作为消息传输系统,一个ESB的最少需求经常被简写为TRANS,定义了作为软件实体的ESB提供的功能:
—Transforms 转换消息格式,针对已注册的服务提供者的需求将消息从一种格式转换到另一种格式。
—Routes 路由消息,将消息传输到已注册的服务,并保证传输的服务质量、服务层的特性。
—Augments扩展信息,在传输的内容中添加额外信息,比如关于消息请求者的元数据。在消息中添加新的通信协议内容以满足服务提供者的需求。
—Notifies通知消息监听者的特定消息请求
—Secures 安全传输,对于传输的消息增加消息认证、授权、不可否认性、机密性等机制。
JBI(Java Business Integration, Java业务集成)介绍
JBI规范及API描述了构建基于插件、基于服务设计的企业级ESB系统的平台。JBI以TRANS需求为基础,基于组件交互和规范化消息(normalized messages)而设计。
JBI是一种规范及API,提供了规范化消息服务、组件框架和管理模型,用以部署路由引擎、规则引擎、以及信息转换等集成服务。基于JBI规范的设计使用特定的基于标准的可插拔架构,此架构内包含一基于 JVM 运行时(runtime)的称为规范化消息路由器(normalized message router,NMR)的组件。
JBI架构的高层组件交互见图1
图1 JBI系统高层架构图
JBI的消息模型基于WSDL,可以很容易地映射到Web服务, HTTP, 电子邮件及JMS中。JBI可以集成旧系统、字节传输、面向文档的传输 (document-oriented transports)以及RPC(Remote Procedure Call, 远程过程调用)等。
图1中的绑定组件(binding components)同面向传输协议的关联方或关联组件通信。图1中的JBI 服务引擎组件(service engine components)提供基于内容的路由、服务整合、规则引擎、信息转换、可定制的信息增强等服务。
规范化消息
JBI系统使用“规范化”消息。消息内包含应用信息荷载、可选的附件、以及用于请求应答双方交互的元数据。消息的规范化过程是将环境相关的信息映射为中立于环境的、抽象的、标准的格式,以便在JBI中传输。所有由规范化消息路由NMR处理的消息都需规范化处理。
规范化消息由如下的三个主要部分构成:
1. 消息内容,亦即荷载,是符合WSDL消息格式的XML文档,不包含针对传输协议或者信息格式的编码。
2. 消息属性,或元数据,是消息携带的额外信息,可以包含安全信息、事务上下文信息、组件特定信息等。消息属性是消息上下文的第一部分。
3. 消息附件,是由消息荷载引用的,包含在一个可以解析处理附件内容的信息处理器内。附件可以是非XML信息。附件是消息上下文的第二部分。
规范化消息路由
JBI系统内消息交换依赖于规范化消息路由NMR在服务者和消费者之间路由消息交换对象(message exchange objects)。针对应用的不同需求以及消息本身特性,NMR提供不同服务质量的消息传输服务。
NMR并不寄宿于任何一个具体的对象中,它被抽象成一套应用程序接口、服务提供者接口、组件接口等。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 端点引用接口
传输通道
JBI传输通道是双向的通信管道,通过NMR传输消息以连接绑定组件和服务引擎。接口javax.jbi.messaging.DeliveryChannel确定服务消费者、服务提供者和NMR三者之间的接口合约关系。
服务使用者通过其传输通道初始化服务调用请求;服务提供者通过其传输通道接受消费者的调用请求。既是使用者又是提供者的组件使用相同的一条传输通道。因此,接口DeliveryChannel的实现必须支持通道实例在多线程下的并发使用。
JBI组件
JBI组件框架提供了可插入的接口,绑定组件和服务引擎可以通过此接口与JBI系统交互。组件框架提供了所有访问JBI服务的接口。
JBI支持二种类型组件,服务引擎和绑定组件。组件可以通过以下二种方式与系统交互:
1. SPIs: 由绑定组件或服务引擎实现的接口。
2. APIs: 系统提供的,绑定组件或服务引擎可以访问的接口
服务引擎
服务引擎是JBI系统内的业务逻辑实现组件,可以作为服务提供者或使用者。服务引擎对服务使用和需求提供整合点。也可以提供诸如信息转换、复杂的路由、以及协调信息等功能。
绑定组件
绑定组件被用来在特定的协议和传输方式中发送和接收消息。通过绑定组件,JBI系统与特定的传输协议解耦。这是通过绑定组件对消息进行相应的协议特定和协议无关的编组(marshalling)和解组(unmarshalling)而实现的,这样JBI环境内仅处理规范化的消息。
规范化消息交换(Normalized message exchange)
JBI首要用途是在组件间路由规范化消息。消息传输时处于规范化形式。
绑定组件必须将特定于协议(传输层)的消息转换为规范化形式。 绑定组件和服务引擎通过传输通道与NMR通信,传输通道提供消息的双向传输机制。
一个JBI系统外服务使用者通过特定协议/传输层发送服务请求到绑定组件。绑定组件转换请求消息为规范化消息,构造一个称为消息交换(message exchange)的消息包, 然后通过传输通道传输到NMR,再由NMR路由到服务提供者。
当所使用的服务引擎或绑定组件收到消息后,创建相应的规范化消息,将此规范化消息填充到一个新的MessageExchange实例中,并传输到目标ServiceEndPoint实例处。服务端点获得消息交换对象后,恢复规范化消息为协议/传输特定格式,然后将消息传输到外部服务提供者。
服务单元
在已安装的引擎或绑定组件中部署的特定于某组件的构件,一般被称为服务单元。服务单元被集成为一个部署文件,称为服务组合。服务组合包含一个部署描述符文件,指定组合中各服务单元的部署方式,如确定将某服务单元部署到那个组件。
服务单元包含内容如下:
—元数据:使用或者生成的服务的JBI描述符
—生成物:一般是XML信息(可能是二进制,或者目标绑定组件或服务引擎需要的任何对象)
ServiceMix 简介
ServiceMix是基于JBI的ESB。它是开源的基于JBI语义和API的ESB和SOA工具包,以Apache许可证方式发布。 它是轻量的ESB实现,易于作为嵌入式ESB使用;集成了对Spring技术的支持;可以在客户端或服务器端运行;可以作为独立的ESB提供者,也可以作为另外ESB的服务组件; 可以在JavaSE或JavaEE服务器中使用;ServiceMix同Apache Geronimo以及JBoss服务器完全集成,并且在Apache Geronimo服务器中可以直接部署JBI组件和服务。
图2 是JBI和ServiceMix关系图
图2 . JBI和ServiceMix
ServiceMix 中包含完整的JBI容器,支持JBI规范的所有功能要求:
—规范化消息服务和路由
—JBI管理Beans (MBeans)
—组件管理和安装的Ant任务
—对JBI部署单元的完全支持,支持JBI组件的热部署
ServiceMix还包含如下的组件和服务:
—Service服务组件
o 通过Drools规则引擎的提供基于规则的路由
o 提供客户端API与JBI组件和服务交互
o Web服务通知(Web Services Notification)协议的实现
o 通过PXE(preboot execution environment, 预启动执行环境)提供对于Web服务BPEL(Business Process Execution Language,业务流程执行语言)的BPEL的支持
o 使用Map缓存或者JCache,支持服务调用缓存
o 支持Java连接架构
o 通过Quartz库集成Timer任务
o 脚本语言支持。任何兼容于JSR-223规范的脚本语言可以用来创建组建,执行信息转换,或者作为表达式语言使用。
o 支持XSLT扩展样式语言转换
o 通过JAXP 1.3 和XML Schema或者RelaxNG提供XML Schema验证支持。
o 通过Oracle的XSQL库支持SQL及XML的XSQL
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
SOA的2008年:应用软件开发hot stove联盟
回首2008年,我们发现一个完整的SOA年。在2008年初,SearchSOA.com涉及Eclipse和影响SCA和JBI。看来,JavaScript框架和图书馆厂商-开放源码的倡导者,仍然处理Web……
-
SOA有哪些基本原则?
在SOA中服务粒度有两种相关的意思,即服务是如何实现的,服务使用和返回了多少数据或多少消息。细粒度服务执行了最小的功能,发送和接收少量的数据……
-
JBI-Java实现SOA的标准途径
本文简短地阐述了即将到来的与SOA(面向服务体系)规范及ESB(企业服务总线)基础架构有关的JBI(Java业务集成)标准……
-
JBI简介
我最近听说有一些开始使用JBI 2.0 ,我感到很惊讶,因为我从来没有看到或听到任何关于JBI 1.0 。JBI 2.0版比原来的版本提供更多的承诺?