您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > Jboss ESB简介及开发实例
JbossESB简介及开发实例.一、JbossESB的简介1、什么是ESB。ESB的全称是EnterpriseServiceBus,即企业服务总线。ESB是过去消息中间件的发展,ESB采用了“总线”这样一种模式来管理和简化应用之间的集成拓扑结构,以广为接受的开放标准为基础来支持应用之间在消息、事件和服务的级别上动态的互连互通。ESB是一种在松散耦合的服务和应用之间标准的集成方式。它可以作用于:①面向服务的架构-分布式的应用由可重用的服务组成。②面向消息的架构-应用之间通过ESB发送和接受消息。③事件驱动的架构-应用之间异步地产生和接收消息。用一句比较通俗的话来描述ESB:ESB就是在SOA架构中实现服务间智能化集成与管理的中介。2、ESB和SOA之间的关系。介绍ESB就不得不提到SOA的概念,那么什么是SOA呐?简单的说,SOA(service-orientedarchitecture)是面向服务的体系结构,是一类分布式系统的体系结构。这类系统是将异构平台上应用程序的不同功能部件(称为服务)通过这些服务之间定义良好的接口和规范按松耦合方式整合在一起,即将多个现有的应用软件通过网络将其整合成一个新系统。多应用的整合不但是跨平台的,而且应该是松耦合的,也就是说,被整合的应用自身仍保持其自主,如香港政府已回归中国,但保持一国二制。新增设的业务功能,应允许适应变化,即随需应变。如何做到跨平台、松耦合,除使用方和服务方外,另有中介方,提供驻册登记和查询。现在社会的劳务市场和职业介绍所等都起这样作用。即先查询、梆定、然后调用。在SOA的体系结构中,简单的可以分为如下几个角色:①服务使用者:服务使用者是一个应用程序、一个软件模块或需要一个服务的另一个服务。它发起对注册中心中的服务的查询,通过传输绑定服务,并且执行服务功能。服务使用者根据接口契约来执行服务。②服务提供者:服务提供者是一个可通过网络寻址的实体,它接受和执行来自使用者的请求。它将自己的服务和接口契约发布到服务注册中心,以便服务使用者可以发现和访问该服务。③服务注册中心:服务注册中心是服务发现的支持者。它包含一个可用服务的存储库,并允许感兴趣的服务使用者查找服务提供者接口。SOA体系结构中的操作①发布:为了使服务可访问,需要发布服务描述以使服务使用者可以发现和调用它。②发现:服务请求者定位服务,方法是查询服务注册中心来找到满足其标准的服务。③绑定和调用:在检索完服务描述之后,服务使用者继续根据服务描述中的信息来调用服务。SOA的优点如下:①利用现有的资产。方法是将这些现有的资产包装成提供企业功能的服务。组织可以继续从现有的资源中获取价值,而不必重新从头开始构建。②更易于集成和管理复杂性。将基础设施和实现发生的改变所带来的影响降到最低限度。因为复杂性是隔离的。当更多的企业一起协作提供价值链时,这会变得更加重要。那么ESB和SOA有什么关系呐?ESB同SOA之间的关系:ESB是逻辑上与SOA所遵循的基本原则保持一致的服务集成基础架构,它提供了服务管理的方法和在分布式异构环境中进行服务交互的功能。可以这样说,ESB是特定环境下(SOA架构中)实施EAI的方式:首先,在ESB系统中,被集成的对象被明确定义为服务,而不是传统EAI中各种各样的中间件平台,这样就极大简化了在集成异构性上的考虑,因为不管有怎样的应用底层实现,只要是SOA架构中的服务,它就一定是基于标准的。其次,ESB明确强调消息(Message)处理在集成过程中的作用,这里的消息指的是应用环境中被集成对象之间的沟通。以往传统的EAI实施中碰到的最大的问题就是被集成者都有自己的方言,即各自的消息格式。作为基础架构的EAI系统,必须能够对系统范畴内的任何一种消息进行解析。传统的EAI系统中的消息处理大多是被动的,消息的处理需要各自中间件的私有方式支持,例如API的方式。因此尽管消息处理本身很重要,但消息的直接处理不会是传统EAI系统的核心。ESB系统由于集成对象统一到服务,消息在应用服务之间传递时格式是标准的,直接面向消息的处理方式成为可能。如果ESB能够在底层支持现有的各种通讯协议,那么对消息的处理就完全不考虑底层的传输细节,而直接通过消息的标准格式定义来进行。这样,在ESB中,对消息的处理就会成为ESB的核心,因为通过消息处理来集成服务是最简单可行的方式。这也是ESB中总线(Bus)功能的体现。其实,总线的概念并不新鲜,传统的EAI系统中,也曾经提出过信息总线的概念,通过某种中间件平台,如CORBA来连接企业信息孤岛,但是,ESB的概念不仅仅是提供消息交互的通道,更重要的是提供服务的智能化集成基础架构。最后,事件驱动成为ESB的重要特征。通常服务之间传递的消息有两种形式,一种是调用(Call),即请求/回应方式,这是常见的同步模式。还有一种我们称之为单路消息(One-way),它的目的往往是触发异步的事件,发送者不需要马上得到回复。考虑到有些应用服务是长时间运行的,因此,这种异步服务之间的消息交互也是ESB必须支持的。除此之外,ESB的很多功能都可以利用这种机制来实现,例如,SOA中服务的性能监控等基础架构功能,需要通过ESB来提供数据,当服务的请求通过ESB中转的时候,ESB很容易通过事件驱动机制向SOA的基础架构服务传递信息。3、JbossESB的主要特征和功能①Jboosesb4.2主要的特性包括:支持普通的通知框架。支持的Transports包括JMS(JBossMQ,JBossMessaging,OracleAQandMQSeries),email,数据库或文件系统.推荐的缺省JMS实现是JBossMessaging1.2.0GA.jBPM集成.支持WS-BPEL.支持WebServices.使用特定的ESB服务器改进部署和配置.支持Groovy.trailblazer例子.许多quickstart例子.支持使用SmooksorXSLT转数据.支持交互步骤松耦合的侦听器和动作模型.使用Drools或者XPath基于内容的路由.支持JAX-R和jUDDI注册.提供允许non-ESBtraffic与ESB进行集成的网关.图形化的配置编辑器.高性能和可靠性(大型保险公司3年的使用).②什么时候使用JboosESB下面的图表说明JBossESB可以被使用的具体例子。虽然这些例子在参与者间使用非互操作的JMS实现特殊的交互,但原理是相同的。下面的这张图表显示了在两个系统间简单的文件发送,而没有使用消息队列管理。下一个图表说明了在与上图相同的环境下如何通过注入实现转换。下面的几个例子,我们使用了消息队列系统(例如,一个JMS实现)。下面这幅图表显示了在相同环境下的转换和排队。JBossESB能被用在多种情况下。举一个例子,下面的图显示了ESB利用文件系统进行基本数据转换。最后的场景又是一个使用了转换和排队的例子。3.JBossESB的核心JbossESB建立在三个核心的体系结构组件上:•消息监听器和消息过滤器代码。消息监听器监听消息(例如,JMS上的Queue/Topic,或文件系统),并路由。然后引导消息到处理管道。消息过滤器则过滤消息,并将消息路由到另一个消息端点。•数据转换使用Smooks转换处理器。•一个基于路由服务的目录。•一个消息存储库,用来存储在ESB上交换的消息/事件。一个典型的JBossESB部署如下图。二、JbossESB的详细介绍。1、总述JBossESB是JBoss推出的ESB的实现,也是JBoss的SOA产品的基础.首先大家对于ESB的定义有很多的不同,我个人更喜欢把ESB看作是系统集成的一个平台.JBossESB是一个基于消息的中间件(MessageOriented).在这篇文章中,我们只是看待ESB中的一个很基础部份,也就是怎么从EndpointA发送信息给ESB的服务S1,然后再有S1发送信息到EndpointB去调用服务。还有一些关于Router(路由),DataTransformation(数据转换)功能点的介绍,比较基础要详细了解JbossESB的各种功能请详细参考相关的文档。我们就假设一个简单的系统集成场景来开始阐述JBossESB的设计和概念。A系统(EndpointA)–Message-ESB-–Message--B系统(EndpointB)所以,如果简单的对于JBossESB定义的话,我们可以定义以下三个概念:MessageListener(接收“inbound”message)MessageFilter(发送outbound”message)Message(消息对象)JBossESB是一个面向服务(ServiceOriented)的架构,所以在ESB内部的要么是一个Service,要么是一个Message.这里的Service就是指具有实现业务逻辑的服务,也可以是一个实现路由(Router),或者数据转化(Transformation)的服务.就拿上面的这个例子,系统A发送一个Message给ESB的一个服务,我们假设叫做S1,那么S1收到Message后,做一些处理,转到S2的服务,S2再把处理后的结果发送给系统B.这样就实现了A和B之间通过ESB的通信.SystemA-message-S1-S2-....-message-SystemB那么在ESB内部是怎么去表达一个服务呢?这里引入了EndpointReference的概念,简称EPR.有了服务之后,服务之间是通过什么样的传输层(比如JMS,FTP,HTTP)来通信呢?所以ESB的内部也引入了Courier的API,来统一抽象传输层.刚我们也看到了,ESB的内部无非就是一系列的服务,但是我们怎么来保存/注册这些服务的呢?JBossESB是使用jUDDI来注册和保存这些服务元数据的。2、JBossESB的几个重要概念在要了解和运行JBossESB之前,我们最好了解下JBossESB中比较重要的几个概念。①Message(消息)ESB内部所交流/传递的都是消息,所以可见这个消息格式的重要性.在JBossESB中,定义了一个Message的对象,它是有以下几个部分构成的。(1).Header(用来存放From,To,Reply-to等Addressing的信息).(2).Body(存放信息主体)(3).Attachment(用来存放附件等)(4).Properties(5).Context(主要是存放一些类似事务的信息等)目前在Body里面一般来说存放两种格式的数据,一个是串行化数据(SerializedObject),另外一个是XML文件,比如常见的SOAP的payload.在ESB中,还有两个定义,一个叫ESB-awareMessage,我们上面所讲的Message就是ESB-awareMessage,正如名字说讲的,它是属于ESB内部的Message对象.还有个叫ESBunawareMessage,也就是说他同样也是一个message,比如SOAPMessage,但是如果把soapmessage直接让ESB来处理,是处理不了的,所以呢?经常的在Listener监听的端口会有个Adapter(在JBossESB里叫做Gateway)来负责把ESB-unawaremessage转成ESB-awaremessage。②Service(服务)ESB的内部服务是用EPR来映射的.ESB的内部服务可以是任何的一个服务,比如说一个FTP的服务,一个基于文件系统的服务等等,那么这个时候我们就需要用EPR来对这个服务进行描述.在EPR这个类里,主要是描述了这个服务的URI,以及所必须的一些元数据.目前在JBossESB中提供的EPR有:FileEPR,EmailEPR,FTPEPR,HibernateEPR等等.我们在注册服务的时候,是将EPR的信息注册到UDDI的容器里,但不仅仅是EPR,还有一些辅助信息,比如定义服务的category-name,service-name.这些将在后面继续介绍。③Listen
本文标题:Jboss ESB简介及开发实例
链接地址:https://www.777doc.com/doc-5163580 .html