




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ServiceMix 企业服务总线企业服务总线 ESB 一一 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 SOAP 绑定组件绑定组件 o 通过 ActiveSOAP 提供基于 StAX XML 流处理 API 的对 SOAP 栈的支持 o 对基于 JAXP 的 Web 服务客户端调用 服务宿主提供支持 并且支持多种协议方式 o 使用反射支持 POJO 对象的部署 o 支持 Java SOAP 附件 API 和 Apache Axis o 通过 XFire SOAP 栈集成 POJO 对象支持 o 集成 Apache WSIF Web Service Invocation Framework Web 服务调用框架 传输绑定传输绑定 o 通过 JavaMail 支持 Email 功能 o 基于文件操作的组件提供将消息写进文件 目录轮询 向 JBI 发送文件 o 通过 Jakarta Commons Net 库提供 FTP 支持 o 支持客户端 服务器端 HTTP 处理 o 通过 XMPP Extensible Messaging and Presence protocol 可扩展的消息提供协议 提供与 Jabber 网络的连接 o 使用 ActiveMQ 支持 JMS 功能 o 使用 Rome 库支持 RSS 的访问及处理 o 使用 Jakarta Commons Net 库支持 VFS virtual filesystem switch 虚拟文件系统转换 提 供对于文件系统 jar zip bzip2 临时文件 万维网分布验证及版本机制 Samba 文件系统 HTTP HTTPS FTP SFTP 等的访问 大部分的 ServiceMix 系统初始化过程 活动过程以及消息交换过程 涉及到基于 JBI 的组件间的通 信或交互 以下部分通过简单的消息交换场景说明这些过程 ServiceMix 2 0 初始化初始化 JBI 容器容器 使用 JBI 容器之前 必须调用其 init 方法执行初始化过程 此方法会实例化核心系统服务 为 JMX 管理 BEAN 服务器以及事务管理器等资源赋值 代码 1 是容器启动代码 代码 1 JBI 容器初始化 protected JBIContainer jbiContainer new JBIContainer jbiContainer init JBIContainer 类的 init 方法会依次进行如下操作 初始化 org servicemix jbi management ManagementContext 对象 并在 JMX MBean 服 务器中注册 此对象是 JBI 管理工具如 JMX 管理器的调用的首要访问点 初始化 org servicemix jbi container EnvironmentContext 实例并在 JMX MBean 服务器中 注册 此对象创建资源目录结构 各种资源包括安装文件 部署文件 组件 共享库 服务组合的文件等 初始化 org servicemix jbi framework Registry 实例 此对象维护服务端点和组件等信息 初始化 org servicemix jbi nmr Broker 实例 此对象管理消息队列 并在 org servicemix jbi nmr flow Flow 对象帮助下分发消息 消息流程对象管理消息代理对象的消息分发 策略 初始化实现 org servicemix jbi framework FrameworkInstallationService 的实例 此对象 管理文件包的安装和卸载 初始化 org servicemix jbi framework DeploymentService 实例 此对象部署服务单元及其 相关服务单元 启动启动 JBI 容器容器 如下面代码 2 所示 简单的调用 JBIContainer 对象的 start 方法即可触发 JBI 容器的启动过程 此过程会启动所有嵌入的组件和服务 比如服务注册区 消息代理 管理上下文 环境上下文 安装服务 部署服务等 多数组件和服务的启动过程仅仅设置一个标志位 以表明组件或服务处于运行状态 而且与 组件关联的定时计划任务开始执行 代码 2 启动 JBI 容器 jbiContainer start 创建支持组件创建支持组件 ServiceMix 框架中作为消息生产者和提供者的对象常被称为支持组件 这些对象实现了 ponent Component 接口 使得 JBI 容器和其它关联对象能够以标准方式操作它们 在 ServiceMix 系统中 此类对象一般继承于 ponents util 包内的某些支持 Support 类 比如 ComponentSupport 或者 PojoSupport 通过继承 支持组件获得了作为 JBI 组 件的缺省行为 比如 JMX 功能等 支持组件一般通过 ponent ComponentContext 对象获得 DeliveryChannel 对象 以用于实际的消息交换 message exchange 对象的创建和处理 请留意代码 3 中支持组件的类 接口层次 代码 3 支持组件类层次 PojoSupport 类封装了简单的基于 POJO 的组件 提供标准的被 ServiceMix 管 理的组件的功能 public abstract class PojoSupport extends org servicemix jbi management BaseLifeCycle implements ponent ComponentLifeCycle ComponentSupport 类扩展了 PojoSupport 类 提供标准 JBI 组件功能 public abstract class ComponentSupport extends ponents util PojoSupport implements ponent Component SenderComponent 类是消息生产者 public class SenderComponent extends ponents util ComponentSupport implements Sender 类 ReceiverComponent 是消息消费者 public class ReceiverComponent extends ponents util ComponentSupport implements org servicemix MessageExchangeListener Receiver 激活支持组件 在使用 ServiceMix ESB 系统中的组件前 这些组件必须得到 激活 相应步骤如下 创建 DeliveryChannel 类的实例 此对象参与随后的消息交换 DeliveryChannel 负责 o 获取路由到此组件的消息 o 发送异步消息 o 发送同步消息 注册 org servicemix jbi framework ComponentRegistry 类的组件 注册后获得一个 org servicemix jbi framework ComponentConnector 类的实例 Servicemix 系统在内部使用此 ComponentConnector 对象来交换消息 在组件注册区内注册上面步骤获得的 ComponentConnector 对象 将此对象与 org servicemix jbi container EnvironmentContext 关联 此对象维护组件运行的 JBI 执行环境 包 括安装路径 部署路径 服务单元目录等信息 调用组件的生命周期 init 方法 然后执行其 start 方法 封装对象的 ComponentConnector 实例为一个 JMX 管理 Bean 并在 JBI 容器的 JMX 管理 Bean 服务器 MBeanServer 中注册此 Bean 激活组件需要与 org servicemix jbi container JBIContainer 类交互 调用其 activateComponent 方法 此方法使用 org servicemix jbi container ActivationSpec 类的实例 以此构建有效的 JBI 组件 ActivationSpec 对象是最终可以被激活的三种 Java 类型中的一种的实例 对应类型如下 ponent Component ponent ComponentLifeCycle 3 org servicemix MessageExchangeListener 此对象实例被封装在 ponents util PojoLifecycleAdaptor 或 ponents util PojoLifecycleAdaptor 或 ponents util ComponentAdaptor 类型实例中 比如 ponents util ComponentAdaptorMEListener 代码 4 说明了如何激活消息发送和接收组件 代码 4 激活发送和接收组件 激活发送组件 String senderComponentID sender org servicemix jbi container ActivationSpec senderActivationSpec new org servicemix jbi container ActivationSpec senderComponentID sender jbiContainer activateComponent senderActivationSpec 激活接收组件 String receiverComponentID receiver org servicemix jbi container ActivationSpec receverActivationSpec new org servicemix jbi container ActivationSpec receiverComponentID receiver jbiContainer activateComponent receverActivationSpec 使用支持组件发送以及接收消息使用支持组件发送以及接收消息 在 ServiceMix 中发送消息 需要通过发送者支持组件传输此消息 需要消息接收支持组件监听并接 收此信息 典型的发送组件典型的发送组件 1 从 ComponentContext 组件获取 javax jbi messaging DeliveryChannel 实例 2 从 DeliveryChannel 实例获取 javax jbi messaging MessageExchangeFactory 类实例 3 使用 MessageExchangeFactory 实例创建包含消息内容的 javax jbi messaging MessageExchange 实例 4 通过 DeliveryChannel 实例将 MessageExchange 实例发送到目的地 代码 5 中通过发送组件发送基于字符串的 XML 消息 代码 5 发送消息 public void sendMessage String xml try ComponentContext context getContext InOnly exchange context getDeliveryChannel createExchangeFactory createInOnlyExchange NormalizedMessage message exchange createMessage message setContent new StringSource xml if resolver null ServiceEndpoint destination resolver resolveEndpoint getContext exchange NullEndpointFilter getInstance exchange setEndpoint destination exchange setInMessage message 现在 发送 exchange 消息 context getDeliveryChannel send exchange catch Exception e e printStackTrace 对特定消息感兴趣的组件可以通过 JBI 框架提供的多种途径来订阅消息交换对象 一种简单机制是 接收组件可以实现 MessageExchangeListener 接口 发送组件设定此接受者为 org servicemix jbi resolver EndpointResolver 端点解析组件 这样设定之后 ServiceMix 会完成 从发送者到接受者的消息传输过程 代码 6 说明了此过程 代码 6 基于端点解析的简单接收过程 public class ReceiverComponent extends ComponentSupport implements MessageExchangeListener Receiver MessageExchangeListener 接口的方法 public void onMessageExchange MessageExchange exchange throws MessagingException NormalizedMessage inMessage exchange getMessage in if inMessage null throw new MessagingException Null in message delivered System out println inMessage 创建接收与发送组件 并将接收组件设置为发送组件中的 EndpointResolver 对象 ReceiverComponent receiver new ReceiverComponent SenderComponent sender new SenderComponent sender setResolver new ServiceNameEndpointResolver ReceiverComponent QNAME 图 3 是 ServiceMix 中发送接收简单消息交换的序列图 图 3 发送接受简单消息 在 Windows 中安装启动 ServiceMix 下载并在 Windows 系统中安装 2 进制分发包 需如下步骤 1 从 ServiceMix org 下载 Windows 平台的 Se
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年数字创意行业数字文化创意发展与IP价值运营研究报告
- 2025年影视行业内容创作与IP运营模式研究报告
- 2025年医疗健康行业数字化医疗服务创新研究报告
- 2025年人工智能医疗行业智能影像诊断与远程手术研究报告
- 2025年智能物流行业智慧仓储与智能运输研究报告
- 2025年教育行业在线教育平台课程内容研究报告
- 2025年化工能源行业绿色能源技术应用与碳排放减少研究报告
- 2025年饮食文化行业传统美食与现代饮食研究报告
- 2025年合肥滨湖产投控股集团有限公司第二批招聘1人笔试参考题库附答案解析
- 2025黑龙江大庆市让胡路区黑龙江人才周区属医院人才引进7人笔试备考试题及答案解析
- 《家蚕小蚕期人工饲料饲养技术规程》
- 《税费计算与申报》第四版 教案全套 王荃 项目1-7 涉税工作基础知识-其他税种的计算与申报
- 肝内胆管癌护理查房课件
- 植物内生菌与宿主关系研究进展
- 无仓储危化品经营单位应急预案
- 关爱生命-急救与自救技能知到章节答案智慧树2023年上海交通大学医学院
- GB/T 33881-2017罐车用铝合金板、带材
- GB/T 2951.2-1997电缆绝缘和护套材料通用试验方法第1部分:通用试验方法第2节:热老化试验方法
- 安全阀校验委托单
- 安全生产知识题库(2000道)
- TB T2075-《电气化铁道接触网零部件》
评论
0/150
提交评论