`
npccsb
  • 浏览: 4981 次
  • 来自: ...
社区版块
存档分类
最新评论

重造Java ESB:JBI与ServiceMix

    博客分类:
  • Java
阅读更多
       Java的进展都是围绕着JSR形式的规格说明书进行的。最近,这个家族中又新添了一个成员,那就是JBI(Java Business Integration)。它是一种企业服务总线(Enterprise Service Bus,ESB),用于形成一种关键基础设施片段,使我们能够用Java实现面向服务的架构。我们将在本文中探讨JBI有关概念以及一种名为SeviceMix的开源实现。

  JBI的主要目的是提供一个基于服务的平台作为对现有Java/J2EE平台功能的扩展。由于Web servicES已经实际应用于J2EE中,而且ESB和SOA等术语与其说是技术推动力倒不如说更是市场概念,所以让我们一起来深究一下到底什么是Java/J2EE中所谓的“基于服务的平台”。

  当前的J2EE部署都运行在一个基础上,那就是应用服务器。应用服务器本身由两个独立的部分组成——Servlet容器和EJB容器,它们分别用于部署JSP/Servlets和EJB构件。在它们中的任何一个,你都能使用Web services。但是,在任何环境中以分散的方式使用services是很困难的工作,而JBI的目的就是为完成这个任务提供一个专门的环境。

  JBI的最底层是一个容器,它与J2EE中的容器一样定义了自身的部署构件。在我们深入之前,让我们先详细了解一下JBI的主要构想。

  首先,它关注了Web services的核心部分:在终端之间传输的SOAP 消息/信封。这种数据段或标记能够包含被服务于很多应用的信息。不仅如此,根据发送端或接受端的不同,它还能协助把某个业务逻辑与数据适配。

  现在,回过头来看看今天的Web services。在Web services出现之前,对于很多企业应用来说,使用面向消息的中间件系统或者MOM实现异构系统之间的通信已经足够了。Web services的出现同样是处于这个目的。用MOM的基于消息的架构和Web services很似,被服务的数据也能在应用之间进行无缝操作。

  这种场景可以被应用到典型的J2EE环境中,并通过JMS或JAX-RPC等技术进行服务。这种做法对简单部署是可行的,但正如前面提到的,当进行很复杂的设计时,现有的容器则显得很难用。于是JBI试图解决这个问题。

  JBI提供了一种正规消息路由器(NORMalized MesSAge Router,NMR),说白了,就是一个地点。在这个地点,所有基于消息的数据片段——SOAP片段、MOM消息、HTTP数据或其它信息——被聚合、集中、应用到业务逻辑、传输,如果有必要则被转换成其它格式并随后被分派到最终目的地。

  先前的描述说明了为什么JBI被称为ESB。它很适合企业级应用,因为它通过一种总线型架构的基于消息的手段到达了适应大范围的消费者和提供者的目的。现在,让我们看看除了NMR还有什么构成了JBI

  和JBI环境直接交互的是两个部分,JBI MAChine和JBI binDIng。JBI machine定义了部署构件以及在环境中管理它们的方式。本质上,它是提供商设计的黑盒,用于在JBI中支持他们自己的模型。另一方面,JBI binding则被环境通过专门的业务协议与外部世界进行通信。

  现在,再让我们把这些概念放到真实的JBI实现ServiceMix中。ServiceMix是完全用JBI的思想开发的一个开源项目。它可以支持多种绑定,包括HTTP、JMS、平面文件以及RSS,还提供了一系列类似BPEL、SchemaValidation、JCA 和缓存等服务。

  与ServiceMix协作的还有基于JMX的管理接口以及用来与JBI构件通信的对本地客户端API。尽管本文不对ServiceMix功能做进一步说明,但你可以很容易地下载该软件然后继续学习。下面,让我们来看看一个可部署在ServiceMix上的真实的JBI构件,这样你会对它有点感性认识。

  LiSTing for JBI Components - File Sender &AMp; File RECeiver.  

<!---->XML version="1.0" encoding="UTF-8"?>
<beans xmlns:my="http://servicemix.org/&amp;lt;a target=" href="http://cache.baidu.com/phrase/200604241218285.html"></beans>DEMo/">
  <!---->
  <container id="&amp;lt;strong style="></container>jbi">
  <property name="useMBeanServer" value="true"></property>
  <property name="&amp;lt;a target=" href="http://cache.baidu.com/phrase/200604241354455.html">CReateMBeanServer" value="true"/>
  <property name="dumpStats" value="true"></property>
  <property name="statsInterval" value="10"></property>
 
   <components></components>
     <!---->
      <component id="fileSender"></component>                 service="fOO:fileSender"                  
                 Class="org.servicemix.components.file.FileWriter">
      <property name="directory" value="outbox"></property>
      <property name="marshaler">
               clASs="org.servicemix.components.util.DefaultFileMarshaler">
      <property name="fileName">
              class="org.servicemix.eXPression.JaxenStringXPathExpression">
      <constructor-arg value="concat('sample_', /sample/@id, '.xml')"></constructor-arg>
     
      </property>
      
      </property>
   </property>

   <!---->
    <component id="filePoller" service="foo:filePoller"></component>          class="org.servicemix.components.file.FilePoller" 
          destinationService="foo:fileSender">
      <property name="workManager" ref="workManager"></property>
      <property name="file" value="inbox"></property>
      <property name="period" value="1000"></property>
      
      
 

  <!---->
  <bean id="workManager"></bean>      class="org.jencks.factory.WorkManagerFactoryBean">
      <property name="threadPoolSize" value="30"></property>
 

 

  JBI规格说明书本身并没有定义构件应该如何编码。请注意,ServiceMix用XML风格的语法定义了两个核心构件,关联到特定的类和属性。在把这种结构部署到ServiceMix以后,环境就会创建一种查询构件,负责从系统和其它构件中读取存档信息,然后把读取的值返回到文件系统。

  该文件系统是JBI中非常基本的场景,因为信息就是从JBI环境(NMR)原样集中的,然后被返回到同样类型的绑定(文件系统)。但是很明显,一旦JBI环境有能力把任何业务逻辑适配成数据,例如BPEL或schema validation,然后重定向到其它类型的绑定,例如HTTP或RSS,那么就不只是返回到文件系统了。

  正如你意识到的一样,当一用到JBI,操纵及分发数据的可能性就很大,但即使JBI用Java的方法实现了SOA,JSR-208规格说明书还是受到了批评。IBM和BEA是Java/J2EE领域的两个主要推动者,他们就不支持这个新项目。尽管如此,还是有像ServiceMix这样的小项目开发者和一些闭源开发组织打赌,一个培育良好的JBI市场将和J2EE的情况差不多。

  假如你正在Java中使用Web services或者为了复杂的集成任务使用基于消息的设计,你应该对JBI的进展特别关心,因为它能为执行这样的任务提供更健壮的平台。就算你对JBI/ESB是否能加入J2EE协议栈还存有怀疑,继续关注还是有帮助的,因为它可能会成为应用服务器领域像Spring那样的事实上的“第三容器”或轻量级的容器扩展,为Java提供SOA能力

分享到:
评论

相关推荐

    基于JBI的ServiceMix服务总线.

    ServiceMix作为一款完全遵循JBI(Java Business Integration)规范的开源产品,是实现SOA(Service-Oriented Architecture,面向服务架构)理念的一个重要工具。ServiceMix不仅能够作为ESB(Enterprise Service Bus...

    JBI开发指南(Servicemix开发指南)

    ServiceMix-bean组件则是ServiceMix中的一个JBI组件,它提供了与POJO(Plain Old Java Object)的集成方式,使得开发者可以轻松地使用POJO处理JBI消息交换。 ServiceMix-bean组件的核心概念包括: 1. JBI是什么? ...

    servicemix

    Apache ServiceMix是基于Java Business Integration(JBI)规范的企业服务总线(ESB)实现,它提供了构建和部署服务组合的强大平台,支持多种协议和服务类型,如SOAP、JMS、HTTP等。ServiceMix的设计原则之一是其...

    apache-servicemix-4.4-fuseesb第五部分

    本部分主要关注 Apache ServiceMix 的第四个主要版本,即 4.4 版本,以及与之关联的 Fuse ESB 实现。 Apache ServiceMix 是一个基于 Java 的 ESB,它利用了诸如 Apache Camel、Apache CXF、Apache ActiveMQ 等组件...

    开源ESB Servicemix的研究与应用

    本文对 ESB 和 JBI 规范,以及其涉及到的面向服务架构(SOA) 和 web 服务(web service)进行介绍,并通过一个基于ServiceMix(一 个基于 Spring、完全遵循 JBI 规范的 ESB产品)实施系统集成的案例来 详细介绍如果...

    SERVICEMIX学习笔记最终版.pdf

    - **ServiceMix简介**:ServiceMix是一款开源的企业服务总线(ESB),基于Java Business Integration (JBI) 规范构建,用于实现企业级应用和服务的集成。它是Apache软件基金会的一个顶级项目。 - **安装步骤**: -...

    ESB产品说明

    #### Apache ServiceMix:JBI标准的践行者 Apache ServiceMix是另一个基于JBI标准的ESB实现,它不仅支持常见的协议如JMS、HTTP、FTP、FILE,还实现了EIP模式,使其成为一个全面的集成平台。作为Apache基金会的顶级...

    ServiceMix学习笔记

    ServiceMix 是一个开源的企业服务总线(ESB),它基于Java Business Integration(JBI)标准,提供了一种灵活的方式来整合各种企业服务。本篇学习笔记将深入探讨ServiceMix的使用,包括其安装、核心概念以及如何创建...

    开源ESB in Action(中文)

    - **Apache ServiceMix**:Apache ServiceMix是另一个强大的开源ESB,它基于Java Business Integration (JBI) 规范构建。ServiceMix提供了一套完整的工具链,包括消息代理、适配器和转换器等,非常适合构建复杂的...

    JBI理论

    在服务导向架构(Service-Oriented Architecture,简称SOA)中,JBI(Java Business Integration)组件是实现SOA的关键部分,它们通过消息交换来提供和使用服务,从而成为连接服务模型与具体技术之间的桥梁。...

    apache-servicemix-4.4-fuseesb第四部分

    4. **JMS 支持**:Java Message Service (JMS) 是在分布式环境中进行异步通信的标准,ServiceMix 和 Fuse ESB 对 JMS 的支持使得消息传递和事件驱动架构成为可能。用户可以通过配置 JMS 提供商(如 ActiveMQ)来实现...

    快速入门指南 中文版 ServiceMix4

    ServiceMix是基于OSGi的Java应用程序,它提供了集成多种不同技术和服务的能力,如Java消息服务(JMS)、Web服务、Java存根(EJB)、企业级JavaBean(EJB)和Java持久化API(JPA)等。 1. **介绍** ServiceMix是一...

    开源ESB实践

    ServiceMix支持JBI(Java业务集成规范)标准,因此能够和其他遵循JBI标准的ESB系统进行互操作。 书中还指导读者如何设置Mule和ServiceMix的环境,这部分内容对于实际操作非常有帮助。搭建环境是任何技术实施的第一...

    使用Servicemix(ESB)发布一个外部的WebService

    Apache Servicemix 是Apache软件基金会下的一个项目,它基于Java消息服务(JMS)和Spring框架,支持多种协议和标准,如WS-*、REST、JBI等,能够与各种应用程序和服务进行交互。 3. **为什么选择Servicemix发布Web ...

    基于ServiceMix的SOA架构的研究与实现

    ServiceMix正是一个基于JBI规范的开源ESB实现,它提供了强大的服务集成能力,能够支持多种服务协议和技术栈,包括Web服务、JMS、SOAP、REST等。 #### 基于ServiceMix的SOA架构实现方案 在本文中,作者提出了一种...

    企业应用集成与开源ESB产品ServiceMix和Mule介绍

    –ServiceMix架构–ServiceMix组件概览–ServiceMix实战–Demo–Mule的工作机理–Mule组件概览–Mule实战–Demo–削弱了部门间的协作–影响资源的整合Point-to-PointsolutionHub-and-...Serv

    ServiceMix学习之我见

    ServiceMix 是一个开源的企业服务总线(Enterprise Service Bus, ESB),它基于 Java Business Integration (JBI) 标准,为分布式系统提供灵活、可扩展的集成解决方案。ESB 是现代企业架构中的关键组成部分,它允许...

    ServiceMix 4.2 Ref cards

    ServiceMix 4.2 是 Apache 项目下的一个开源企业服务总线(ESB),在这一版中,它从基于 Java Business Integration (JBI) 的架构迁移到了 OSGi(开放服务网关协议)架构。ServiceMix 的历史可以追溯到五年以前,它...

Global site tag (gtag.js) - Google Analytics