1       概述(Overview)
JBI 定义了一种通过插接组件间交互传递中间消息(Mediated Message Exchange)的方式构建集成的架构方案。JBI中定义的消息交换模型基于WSDL2.0规范(或WSDL1.1)。
图1 JBI插件系统
图1展示了抽象层次的JBI插接组件概念,JBI为插接组件提供了特定的交互接口,插接组件也为JBI系统提供了特定的交互接口,组件与组件之间并不直接进行交互,相反如图2所示,JBI作为组件之间消息交换的中介。参与数据交换的组件间的分离对于解耦服务提供者和服务消费者是至关重要的,这也是一般的SOA架构,特别是集成解决方案所期望的。这种方式提供了很大的灵活性,因为消费者和提供者之间的纠缠达到了最小化,同时对于JBI实现中的消息处理和监控也是很重要的。同时要注意,因为这种处理模式中固有的异步特征使得提供者和消费者之间从不共享一个线程,从而有助于保持组件间的松耦合。
图2中间消息交换:消息序列图
在这种基于WSDL的面向服务的架构模型中,JBI插接组件负责提供和消费服务。通过提供服务,一个组件为其他组件甚至是它自己提供了一种或多种处理功能(function),这些功能在WSDL2.0模型中定义为操作(operation),参与一个或多个消息的交换。WSDL规范中定义的四种基本的消息交换模式(Message Exchange Patterns,简称MEPs)清楚地定义了上述操作在执行过程中消息的交换顺序。这四种消息交换模式是JBI组件(消费者和提供者)之间进行交互的基础。
JBI 组件提供的任何服务都是由组件使用WSDL1.1或2.0规范进行描述的,WSDL为基于XML的消息交换提供了一种抽象的,独立于特定技术的服务模型。WSDL也为服务消费者和JBI环境本身提供了一种声明额外的服务元数据的机制,组件可以通过JBI环境查询可用的WSDL描述的服务。
如图1所示,JBI组件插接在一个称为“JBI框架”(JBI framework)的环境中。这些组件可为来自第三方的终端用户所用,尤其在应用系统集成时遇到问题时,它们可以提供一些通用的或标准的功能。
这些组件可以分为两种不同的类型:
·           服务引擎(Service Engine [SE]) 服务引擎既为其他组件提供了业务逻辑和数据转换服务,同时也消费这些服务。服务引擎可以集成基于Java的应用(和其他资源)或提供了Java API接口的应用。
·           绑定组件(Binding Component [BC]) 绑定组件为JBI环境以外的服务提供了连通性,这些外部的服务可能包括通信协议或企业信息系统(Enterprise Information System)提供的服务(EIS资源)。绑定组件可以集成使用Java环境不能提供的远程访问技术的应用(或其他资源)。
服务引擎和绑定组件可以是服务提供者,服务消费者或两者兼具。服务引擎和绑定组件基于合理的架构原则,但两者之间的差别完全由实际应用决定。把业务处理逻辑同通信逻辑分离降低了实现的复杂度并提高了灵活性。
JBI 不仅为消息系统提供了组件互用性,同时也定义了一个基于JMX(Java Management eXtensions)的管理框架。JBI为以下功能提供了标准的管理机制:
·           组件的安装
·           组件生命周期的管理(启动/停止等)
·           组件服务描述信息(Service Artifacts)的部署
最后要说明的一点是,JBI组件也可以看作一种容器,通过部署服务描述信息添加新的服务消费者或服务提供者逻辑。例如,一个提供基于XSLT转换服务的服务引擎可以部署XSLT样式表,从而添加新的转换操作。这种为特定组件添加功能服务描述信息的过程称为“部署”(Deployment),用于区分组件的安装。JBI将一组部署描述信息及其相关的元数据的集合称为服务集合(Service Assembly)。这些服务描述信息及其关联元数据集在一些文献中称为合成服务描述符(Composite Service Description [CSD])。
1.1    定义(Definitions)
JBI 定义的不是一个传统的应用程序模型,相反地, JBI通过将插接组件抽象为服务提供者和服务消费者而与面向服务的架构紧密结合来构建企业应用。开发人员使用该规范中定义的APIs和SPIs开发插接到JBI环境中的服务引擎和绑定组件。
服务引擎(SE)是指提供业务逻辑处理,数据转换服务等的插接组件。
服务引擎根据其提供的功能可以有多种形式。特别的,一些SE可作为处理容器,为用户提供特定的开发模型,例如:
·           一个XSLT XML转换引擎可以支持多种转换形式,应用开发接口就是XSLT语言本身;
·           对于一个WS-BPEL 2.0业务处理执行引擎,应用开发接口就是WS-BPEL;
·           对于一个EJB容器,API就是符合特定EJB规范的Java。
绑定组件通过提供通信协议处理功能,使得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把它们的服务发布给远程消费者,同时它们也消费远程服务。
JBI 的各种用户可以扮演几种不同的角色:
·           集成架构师(Integration Architect) 设计解决系统集成问题的整体思路,包括选择提供连通性和业务逻辑的JBI组件。
·           集成技术员(Integration Technologist) 设计解决某个集成问题的具体服务,并对这些服务在JBI系统中的集成进行配置。
·           系统管理员(System Administrator) 安装、配置、监控和调整JBI系统,提供设计好的集成服务。
·           JBI 组件开发者(JBI Component Developer) JBI 组件可以由用户或是第三方来创建。无论谁来创建,JBI插件的开发者必须提供符合本规范定义的具体要求的Java组件。
1.2    基本原理与假设(Rationale & Assumptions)
本规范的基本原理立足于以下几个关键假设、经验数据 、传闻和业务需求。
·           J2EE ™ 平台提供者越来越把Web服务作为中心而不是作为其产品所使用的辅助工具。
·           Web 服务标准的革命使得在服务集成领域越来越需要大量的新型开发人员,他们需掌握的将不再主要是过程化语言,而是新兴的标记语言。
·           能够支持服务合成语言,这主要是因为WSDL可以描述抽象业务消息的含义,尤其是WSDL所定义的消息。
·           建立规格化(业务)消息的通用抽象视图,可以将组件特定的应用程序模型(用于设计和开发业务逻辑)从支持这些逻辑的通信基础结构中剥离出来。
1.3    目标(Goals)
以下是本规范的基本目标:
·           为服务引擎和绑定组件的开发者建立一套标准的SPI,即JBI组件。
·           抽象的协议无关的消息交换(protocol-neutral Message Exchange)和规格化消息(Normalized Message [NM])。
·           提供一套标准的JBI组件间消息交换机制。
·           建立一个标准来封装JBI组件,并为这些组件部署服务。
·           定义一些管理监控挂钩(接口),用于以后开发针对各种特定问题域的标准工具。
·           提供服务引擎和绑定组件实现的复合型和多样性,不同的供应商可以发布服务引擎、绑定组件或二者兼具。这些组件之间能够进行可靠性交互,由这些组件(在JBI基础设施之上)构建的系统必须能够集中管理。
1.4    与其他规范和技术的关系(Relationship to other Specifications and Technologies)
JBI 实现依赖于J2SE1.4或J2EE1.4。
JBI 使用Web服务描述语言([WSDL2.0]和[WSDl1.1])作为服务描述语言,在WSDL2.0中,还作为插接式组件交互的基本模型。
交互使用基于XML的消息[XML1.0]。XML的处理遵循当前正在开发的JAX-RPC2.0模型[JAX-RPC2.0],因此,JAX-RPC2.0和JBI之间的关系是不正式的;本规范将来的版本会制定它和JAX-RPC2.0之间的正式依赖关系。
JBI 依赖于Java管理扩展(Java Management eXtensions JMX)[JMX1.2]。
JBI 企业服务总线(Enterprise Service Bus[ESB])系统中定义了“服务容器”的概念。
1.5    角色(Roles)
一个功能完善的集成产品须发布一系列满足或超过标准JBI系统要求的关键组件。设计时,JBI对解决方案的多数必要元素是沉默的。例如,服务引擎应该被看作一个业务逻辑的容器,业务逻辑使用的词汇范围从有注释的Java™到XML(如XSLT),这些词汇不是JBI定义的。JBI假定在发布一个总体业务解决方案时,公共的底层对象扮演一些不同的角色。
1.5.1   引擎开发者(Engine Developers)
一个符合JBI规范的服务引擎(SE)实现需要实现规格化消息路由(Nomalized Message Router[NMR]).另外,SE开发者须实现组件生命周期和管理接口,并且必要的话还要实现一个部署接口。如果SE作为一个容器,SE开发者可能要提供用于简化特定的SE产品的工具。
1.5.2   绑定开发者(Binding Developers)
一个符合JBI规范的绑定组件(BC)实现的要求同SE。它们同SE主要的不同点在于,绑定组件使用的远程访问协议和提供的服务不同。
1.5.3   JBI系统提供者(JBI Environment Providers)
JBI 兼容的系统的提供者须支持本规范指定的标准化接口。JBI系统可选择使用J2EE™1.4或更新的平台,但不是必须的。如果不支持J2EE,那么必须支持J2SE1.4或更新的版本。
JBI1.0 兼容的系统必须支持至少一个WS-I Basic Profile1.1[http://www.ws-i.org/Profiles/BasicProfile-1.1.html]绑定组件的实现。
一个符合JBI规范的系统可选择发布一个服务引擎的实现,但不是必须的。
1.5.4   J2EE™平台提供者(J2EE™ Platform Providers)
J2EE ™平台提供者可选择发布一个包括服务引擎、绑定组件和应用级工具的完整JBI系统。J2EE™平台提供者当前并不要求必须支持JBI。
1.5.5   JBI应用开发者(JBI Application Developers)
JBI 应用开发者使用特定的SE和BC实现定义的词汇和工具,建模、设计、开发和部署业务组件。这样整个JBI系统变得与JBI应用程序开发者无关了。
许多这样的开发者开发XML artifacts来定义服务引擎和绑定组件。这不是传统的重点放在代码编写的J2EE和J2SE领域开发者的工作模式。

JBI规范1.0[3]——概述相关推荐

  1. JBI规范1.0[8]——javax.jbi

    类的说明 异常 JBIException110 JBIException是由JBI提供的API和组件提供的SPI抛出的顶层异常. JBIException 声明 public class JBIExc ...

  2. 一公司C#编程规范v2.0(转)

     C#编程规范 Version 2.0 目录 第一章 概述      4 规范制定原则      4 术语定义      4 Pascal 大小写      4 Camel 大小写      4 文件 ...

  3. Internet Information Services 5.0 技术概述(转)

    Internet Information Services 5.0 技术概述 操作系统 白皮书 摘要 本白皮书为信息技术专业人员,提供随 Microsoft Windows 2000 提供的 Inte ...

  4. Vue开发规范1.0

    2019独角兽企业重金招聘Python工程师标准>>> VUE开发规范-V1.0 前提条件 开发环境:Node 开发工具:推荐 WebStorm 同步工具:Git 推荐开发插件 es ...

  5. ppt android sdk,《0.AndroidSDK概述.ppt

    <0.AndroidSDK概述 Eclipse的安装 Eclipse下载完成后解压即可. 注意事项:解压路径中最好不要带有中文路径,最好不要带用空格的路径 Evaluation only. Cr ...

  6. Q96:PT(3):基于噪声的纹理(Noise-Based Textures)(0)——概述

    标题中的"PT"表示:Procedural Texture(过程纹理).表示该章节属于"过程纹理"的内容. 当前章节在"过程纹理"内容中的位 ...

  7. 服务器虚拟化专用ovf模板,科学网—开放虚拟化格式规范2.0.0——OVF package - 唐宏伟的博文...

    开放虚拟化格式规范2.0.0--OVF package 学习笔记 开放虚拟化格式规范(Open Virtualization Format Specification)是由DMTF制定的关于虚拟化技术 ...

  8. 深入正则表达式(0):正则表达式概述

    正则表达式简介 正则表达式(regular expression,在代码中常简写为regex.regexp或RE),又称正规表示式.正規表示法.正規運算式.規則運算式.常規表示法,是计算机科学的一个概 ...

  9. OpenGL ES 2.0 总体概述

    文章目录 OpenGL ES 2.0 总体概述 1. OpenGL ES 的两个小伙伴 1.1 EGL 1.2 GLSL 2. 屏幕图片的本质和产生过程 3. OpenGL ES pipeline 3 ...

最新文章

  1. 方法论之 如何解决一个问题
  2. 阿里云边缘计算又获奖啦!
  3. 自定义loading加载
  4. java list e 查找_源码(04) -- java.util.ListE
  5. php重写html不刷新,html5,html_两个页面进行交互,如何实现页面不刷新就更改html?,html5,html,javascript,php - phpStudy...
  6. unity, 取消ugui button响应键盘
  7. 每日算法系列【LeetCode 875】爱吃香蕉的珂珂
  8. cocos2d-x新手学习之Helloworld(第三篇)[版本号:cocos2d-x-3.1.1]
  9. 从入门到进阶,JAVA书籍的最佳阅读顺序!
  10. IT成长日记(一)——字体
  11. 概率论的学习和整理11:伯努利试验的3种分布:0-1分支,几何分布, 二项分布
  12. Revit模型轻量化方法
  13. 一个基于angularJS的工资计算器
  14. app播放无声音乐实现app后台运行
  15. 欧盟共同语言标准c1,阅读|【Reading Explorer】(pdf可下载)
  16. 程序员读《三体》后看到了什么?
  17. 每日一算法7--35选7彩票程序
  18. 【转】几种小波阈值去噪程序
  19. 跨平台手动迁移虚拟机
  20. CTF压缩包加密破解总结

热门文章

  1. 论文解读:On The Alignment Problem In Multi-Head Attention-Based Neural Machine Translation
  2. deep features for text spotting 在windows上使用
  3. 计算机专业评职称要不要工作年限,专业技术工作年限怎么算才是正确的?
  4. 7月蓄势待发,2023上海内部物流展,预登记全面启动!
  5. Grafana配置数据源,自定义查询语法
  6. IntelliJ IDEA 创建web教程
  7. js进阶之onresize
  8. 【C语言】对猴子吃桃问题的解读
  9. C语言中 e3是什么意思,fib在c语言中是什么意思?
  10. PHP使用predis/predis包应用实例