ServiceMix学习之我见(8)

2019-02-16 14:38

3.2 共享库安装(Shared-library Installation)

Java库可被多个组件共享。使用标准管理机制安装共享库。

3.3 部署(Deployment)

许多组件可作为容器,提供(或消费)基于组件包含的信息的服务。例如,一个XSLT引擎包含多种样式表(style sheet),每种样式表提供一种特定的转换服务。

给一个容器组件引进新的信息称为部署(deployment),引入这个名词以便于同组件或共享库的安装予以区分。

3.1.1 单元部署(Unit Deployment)

一个发往单个组件的部署包称为服务单元(Service Unit或SU)。服务单元的内容对于JBI来说是不透明的(而不像描述符文件),但对于它即将部署到的组件来说是透明的,同样,对设计时加工生产SU包含的信息来说也是透明的。服务单元包含一个JBI定义的描述符文件,该描述符定义了服务单元生产和消费的静态服务。这有助于创建合成部署。

3.1.2 合成部署(Composite Deployment)

JBI系统中创建一个新的服务或消费者应用一般需要多种部署。JBI提供了合成部署的能力支持多种部署,通过部署,几个不同的组件可以组合成服务集合(Service Assembly(SA))。服务集合包括一个合成服务部署描述符,负责服务集合包含的每个服务单元在组件上的部署。注意,服务集合的概念有时也称为“合成服务描述”(CSD:composite service description)。

一个服务集合代表了一个合成服务。由于这层关系,JBI提供了管理功能,用来从整体上对一个服务集合中的每个服务单元的生命周期进行控制。

3.1.3 合成服务元数据(Composite Service Metadata)

部署描述符也包括了服务单元和服务提供者之间的服务连接信息,允许服务集合的重组。这些信息分成两类:

· 服务单元部署后所提供和消费的静态服务的描述。

· 服务单元和服务集合之间的静态服务互联的描述,以及与服务集合外的服务之间的依赖

关系。(如,JBI系统内的其他服务)。

前一类允许使用工具检查静态服务间的依赖关系,并提供一个服务单元且无需分析其内容。组件自身也可能使用这些信息来为服务单元的部署提供配置信息。

Page 36 of 67

后一类允许服务集合的设计者通过声明消费者和提供者之间的新连接,从而改变静态服务消费者和提供者之间的连接。这些连接用来给一个提供者端点重命名,这样当一个消费者请求某个特定的服务端点时,实际上将使用另一个不同的端点。

例如,假设在一个服务集合里有如下元数据:

· SU1使用端点

EP1, · EP1连接到EP2。

服务集合成功部署后,如果部署了SU1的组件要发送一个消息交换到EP1,将发送到EP2。

下图是合成服务元数据的示意图。

图22 合成服务示例:单向消息适配器模型

上例基于“JBI系统架构”一章所举的单向消息适配器一例。BC1作为外部服务消费者的代理,BC2作为服务提供者的代理。SE2提供转换服务,SE1编排整个服务,在编排的过程中同时扮演了消费者和提供者两种角色。服务集合负责把SE1连接到SE2和BC2提供的服务上,把BC1连接到SE1提供的单向适配器服务上。

使用合成服务元数据只是JBI提供的连接服务消费者和提供者的几种方法之一。隐式端点选择、消费者动态端点选择及消息交换地址类型详见“规格化消息路由”一章。

Page 37 of 67

3.1.4 部署生命周期(Deployment Life Cycle)

特定的JBI接口为每个组件的部署提供了一个简单的生命周期模型。下图显示了这个模型,同组件的生命周期类似。

图23 部署生命周期状态图

3.1.5 组件生命周期(Component Life Cycle)

特定的JBI管理接口为每个组件管理一个简单的生命周期模型。组件可以添加额外的状态信息扩展该模型。下图显示了基本的生命周期模型

图24 基本组件生命周期状态图

组件的扩展生命周期是在基本生命周期上加上由组件的安装和卸载引入的状态。另外,组件可以使用扩展MBean扩展基本的组件生命周期。例如,一个组件可以使用扩展MBean提供的控制功能为“开始”状态添加一个“暂停”子状态。

3.1.6 类的加载(Class Loading)

JBI实现提供类的加载器,创建组件的引导程序和组件的实现。类的加载器通过已声明的类路径访问可用的类。(参见Java语言规范[JLS])(java.lang.ClassLoader)。在组件的扩展生命周期中使用两种类型的类加载器:

· 引导程序。在组件扩展生命周期中的安装和卸载阶段,组件安装方法使用的类加载器可

以访问引导程序类的路径。JBI实现使用类加载器创建组件引导程序(Bootstrap)的一个实例。 · 执行程序。安装完毕之后,组件进入扩展生命周期中的执行阶段。JBI实现为执行阶段提供的类加载器通过组件声明的类路径访问类和该组件使用到的共享库。JBI实现使用类加载器创建组件(Component)的一个实例。

Page 38 of 67

3.1.7 使用JMX(Use of Java Management Extensions)

Java管理扩展(JMX)提供管理设备(命令行脚本引擎、Ant脚本、浏览器UI或图形化UI)与JBI系统(包括JBI组件)之间的交互基础。JBI实现必须支持JMX1.2.1或更新的版本。

JBI组件实现特定的JBI(Java语言)接口支持特定的JBI管理功能,JBI实现自身提供特定的JMX MBean使用组件实现的接口。例如,一个管理工具使用实现提供的MBean执行部署,而MBean使用组件提供的服务单元管理器(ServiceUnitManager)接口部署服务单元到那个组件上。

组件提供它们自己的MBean执行此规范外的管理任务。关于此机制详见“组件安装”和“组件生命周期”两节。

3.1.8 使用Apahca Ant编写脚本(Use of the Apache Ant for Scripting)

Apache Ant是JBI实现使用的一种标准脚本语言。Ant任务的实现必须用到JMX管理接口。

3.4 包装(Packaging)

JBI为组件的安装和作为“容器”的组件的部署信息定义了标准的包装。安装时将会用到一个描述符,部署时将会用到两种描述符:

· 服务集合描述符。用来描述一个服务集合的内容。它主要描述了服务集合中的各个服务

单元所部署的位置。 · 服务单元描述符。用来描述一个服务单元提供和消费的服务。

这几种描述符的类型相似,为此引入一个简单的模型。

3.4.1 安装和部署描述符(Installation and Deployment Descriptors)

下图显示了用来创建安装描述符和两种部署描述符的模型,为清晰起见使用RelaxNG缩写方式。

defaultnamespacethis=\start= elementjbi{

attributeversion{xsd:decimal},

(component|shared-library|service-assembly|services) }

Page 39 of 67

component= elementcomponent{

attributetype{\

attributecomponent-class-loader-delegation{\attributebootstrap-class-loader-delegation{\identification,

elementcomponent-class-name{attributedescription{text}?,text}, elementcomponent-classpath{classpath}, elementbootstrap-class-name{text}, elementbootstrap-classpath{classpath}, shared-library-list*, element*-this:*{text}* }

shared-library= elementshared-library{

attributeclass-loader-delegation{\attributeversion{text}?, identification,

elementshared-library-classpath{classpath} }

shared-library-list= elementshared-library{ attributeversion{text}?, text }

service-assembly= elementservice-assembly{ identification, service-unit*, connections?,

Page 40 of 67


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

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

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

马上注册会员

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