ServiceMix-ESB介绍-程序员宅基地

技术标签: Websphere  SOA  应用服务器  JBoss  企业应用  

ESB and ServiceMix Introduction

ESB(Enterprise Service Bus)
JBI(Java Business Integration)
BC(Binding Component)
SE(Service Engineer)
SOA(Service Oriented Architecture)
NMR(Normalized Message Router)
WSDL(Web Services Describe Language)
DSL( Domain Specific Language)
JBI(Java Business Integration)
Web Tools Project (WTP)
BEPL(Business Executing Process Language)
JAX-WS (Java API for XML Web Services) is a Java programming language API for creating web services. It is part of the Java EE platform from Sun Microsystems. Like the other Java EE APIs, JAX-WS uses annotations, introduced in Java SE 5, to simplify the development and deployment of web service clients and endpoints.
JAX-RS( Java API for RESTful Web Services) is a Java programming language API that provides support in creating web services according to the Representational State Transfer (REST) architectural style[1]. JAX-RS uses annotations, introduced in Java SE 5, to simplify the development and deployment of web service clients and endpoints. From version 1.1 on, JAX-RS is an official part of Java EE.
REST (Representational State Transfer) is a style of software architecture for distributed hypermedia systems such as the World Wide Web. The term Representational State Transfer was introduced and defined in 2000 by Roy Fielding[1][2] in his doctoral dissertation. Fielding is one of the principal authors of the Hypertext Transfer Protocol (HTTP) specification versions 1.0 and 1.1.
Conforming to the REST constraints is referred to as being ‘RESTful’.
Axis2 is a Web Services / SOAP / WSDL engine
是SUN公司解决SOA的方案,当然JBI没有得到IBM与BEA的承认(IBM与BEA等公司推荐SCA和SDO)。
  这里先介绍下JBI架构思想,JBI目的主要是在于创建一个可以集成各种组件服务的运行环境,当然这也是一种服务总线思想的体现。
  目前流行的服务容器有Servlet容器、EJB容器、JMS容器。
  a. Servlet容器只能处理以HTTP/SOAP协议传输的消息(接收与响应);
  b. EJB容器只能处理RMI协议传输的消息;
  c. JMS容器则处理的是JMS协议传输的消息;
它们之间无法进行通讯,如果想集成上面不同类型的容器服务,则必须有一种能融合以上不同容器的 新容器出现。JBI就是基于解决这种问题的思路出现的,JBI提供了各种各样的容器绑定组件(Binding Component,称BC),BC专门负责接收各种各样的传输协议的消息与发送请求消息给外部容器。当然JBI还提供其它的功能,要不这纯属一种代理了,就没什么意义。
  JBI提供处理各种业务的组件的消息(即Service Engines组件,称SE),比如接收到HTTP的消息后需要转发给外部组件EJB,则需要SE组件来进行转换(更准确的说是Transform SE组件)。其实BC与SE之间是无法直接通信的,所有的消息都是通过传输通道(Deliver Channel)传送到NMR(Normalized Message Router),再由NMR通过DC将信息转到SE或BC的
ServiceMix是JBI规范的一种实现。它包涵了许多JBI组件,这些组件支持多种协议,比如JMS,HTTP,FTP,FILE等。同时也实现了EIP,规则和调度。早在几年前,它就已经成为了Apache的顶级项目。ApacheServiceMix 也整合了其他的开源项目,比如Apache ActiveMQ,Apache CXF,Apahe Camel,Apache ODE以及Apache Geronimo

1. ESB全称为Enterprise Service Bus,即企业服务总线。
它是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。
  ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。
编辑本段
一、ESB的五个基本功能:
  1)服务的MetaData管理:在总线范畴内对服务的注册命名及寻址管理功能。
  2)传输服务: 必须确保通过企业总线互连的业务流程间的消息的正确交付,传输还包括基于内容的路由功能。
  3)中介:提供位置透明性的服务路由和定位服务;多种消息传递形式;支持广泛使用的传输协议。
  4)多种服务集成方式: 如JCA,Web服务,Messaging ,Adaptor等.
  5)服务和事件管理支持: 如服务调用的记录、测量和监控数据;提供事件检测、触发和分布功能;
编辑本段
二、ESB的八个扩展功能:
  1)面向服务的元数据管理: 他必须了解被他中介的两端,即服务的请求以及请求者对服务的要求,以及服务的提供者和他所提供的服务的描述;
  2) Mediation :它必须具有某种机制能够完成中介的作用,如协议转换;
  3)通信:服务发布、订阅,响应 请求,同步异步消息,路由和寻址等;
  4) 集成: 遗留系统适配器,服务编排和映射,协议转换,数据变换,企业应用集成中间件的连续等。
  5)服务交互: 服务接口定义,服务实现的置换,服务消息模型,服务目录和发现等。
  6)服务安全: 认证和授权、不可否认和机密性、安全标准的支持等;
  7)服务质量: 事务,服务的可交付性等;
  8)服务等级: 性能、可用性等。
  ESB 中最常提到的两个功能是消息转换和消息路由。
编辑本段
三、ESB的出现改变了传统的软件架构
   ESB 是传统中间件技术与XML、Web服务等技术相互结合的产物,ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还 可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。从功能上看,ESB提供了事件驱动和文档导向的处理模 式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。
编辑本段
四、企业服务总线(ESB)的用处
   ESB 不是万能的,他不是一个应用程序框架,也不是一个企业应用的解决方案.它只是一个基于消息的调用企业服务的通信模块!你可以把它嵌入到你的应用程序框架 中,例如嵌入到spring容器里面,或者嵌入到工作流系统中.它的作用是对企业里面的SOA服务的调用提供一个框架和简便的方法.
编辑本段
五、企业服务总线(ESB)的应用特征
   大规模分布式的企业应用需要相对简单而实用的中间件技术来简化和统一越来越复杂、繁琐的企业级信息系统平台。面向服务体系架构(SOA)是能够将应用程 序的不同功能单元通过服务之间定义良好的接口和契约联系起来。SOA使用户可以不受限制地重复使用软件、把各种资源互连起来,只要IT人员选用标准接口包 装旧的应用程序、把新的应用程序构建成服务,那么其他应用系统就可以很方便的使用这些功能服务。
  支撑SOA的关键是其消息传递架构-企业服务总线(ESB)。ESB是传统中间件技术与 XML、Web服务等技术相互结合的产物,用于实现企业应用不同消息和信息的准确、高效和安全传递。ESB的出现改变了传统的软件架构,可以提供比传统中 间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务协调运作,实现不同服务之间的通信与整合。ESB在不同领域具有 非常广泛的用途:
  电信领域:ESB能够在全方位支持电信行业OSS的应用整合概念。是理想的电信级应用软件承载平台。
  电力领域:ESB能够在全方位支持电力行业EMS的数据整合概念,是理想的SCADA系统数据交换平台。
  金融领域:ESB能够在全方位支持银企间业务处理平台的流程整合概念,是理想的B2B交易支撑平台。
  电子政务:ESB能够在全方位支持电子政务应用软件业务基础平台、信息共享交换平台、决策分析支撑平台和政务门户的平台化实现。
编辑本段
六、几种ESB的结构
  ESB提供了一种开放的、基于标准的消息机制,通过简单的标准适配器和接口,来完成粗粒度应用(服务)和其他组件之间的互操作,能够满足大型异构企业环境的集成需求。它可以在不改变现有基础结构的情况下让几代技术实现互操作。
  通过使用ESB,可以在几乎不更改代码的情况下,以一种无缝的非侵入方式使企业已有的系统具有 全新的服务接口,并能够在部署环境中支持任何标准。更重要的是,充当“缓冲器”的ESB(负责在诸多服务之间转换业务逻辑和数据格式)与服务逻辑相分离, 从而使得不同的应用程序可以同时使用同一服务,用不着在应用程序或者数据发生变化时,改动服务代码。
1. IBM WebSphere ESB
   IBM 提供了三种 ESB 产品:IBM WebSphere ESB、IBM WebSphere Message Broker、IBM WebSphere DataPower Integration Appliance XI50。根据您的需求选择 ESB 来增强您的 SOA。WebSphere ESB 是一种基于平台的 ESB,作为集成的 SOA 平台,针对 WebSphere 应用服务器进行了优化。WebSphere Message Broker 是跨平台的 ESB,是为异构 IT 环境中的统一连接和转换而构建的。WebSphere DataPower Integration Appliance XI50 是一种基于设备的 ESB,是为简化的部署和更强的安全性而构建的。客户面临着从简单到复杂的各式各样的 ESB 需求。WebSphere ESB的结构如图一所示。
2. Microsoft ESB
   微软通过其应用平台提供了全面的ESB服务,包括:Windows Server 2003,.NET Framework, BizTalk Server 2006 R2. 应用平台提供了一个基础架构,基于此可以灵活和安全地重复使用架构和商业服务,并具有协调原有的服务整合到新的端到端的业务流程中的能力。如图二所示。
  微软通过一些列的产品Windows Server 2003, the .NET Framework 3.0, and BizTalk Server 2006作为对企业实现ESB的支撑,Microsoft ESB Guidance是基于BizTalk Server 2006一组应用,它提供以下公用的ESB组件:l Message routing (消息路由) l Message validation (消息验证) l Message transformation (消息转换) l Centralized exception management(集中的异常管理) l Extensible adapter framework(可扩展的适配器框架) l Service orchestration(服务的编制支持) l Business rules engine(业务规则引擎) l Business activity monitoring(业务活动监视)微软 ESB 指南提供了架构指导,模式和实践,以及一套BizTalk Server 和 .NET Framework 组件来简化基于微软平台的大型或小规模的ESB解决方案的开发。它还可以帮助开发人员扩展现有的信息和集成解决方案,包括的一些服务和组件。
3. JBOSS SOA Platform
   JBoss Enterprise SOA Platform提供了一个基于标准的平台,用以集成应用、SOA服务、业务事件和自动化业务流程。这一SOA平台集成了特定版本的JBoss ESB、jBPM、Drools、和已得到验证的JBoss企业应用平台,把它们组织在一起形成一个单一的企业级发布。JBoss Enterprise SOA Platform打包了不少流行组件如:
  l JBoss ESB l JBoss jBPM jPDL l JBoss Rules (Drools) l JBoss Application Server l Hibernate l Hibernate Entity Manager l Hibernate Annotations l JBoss Seam l JBoss Web (嵌入式Tomcat 6.0) l JBoss Cache l JGroups l JBoss Messaging l JBoss Transactions l JBoss Web Services (JBossWS) l JBossXB l JBoss AOP l JBoss Remoting l JBoss Serialization l JacORB
4. ServiceMix对ESB的实现
   ServiceMix是一个建立在JBI (JSR 208)语法规则和APIs上的开源ESB(Enterprise Service Bus:企业服务总线)项目。ServiceMix是基于JBI的ESB。它是开源的基于JBI语义和API的ESB和SOA工具包,以Apache许可 证方式发布。 它是轻量的ESB实现,易于作为嵌入式ESB使用;集成了对Spring技术的支持;可以在客户端或服务器端运行;可以作为独立的ESB提供者,也可以作 为另外ESB的服务组件; 可以在JavaSE或JavaEE服务器中使用;ServiceMix同Apache Geronimo以及JBoss服务器完全集成,并且在Apache Geronimo服务器中可以直接部署JBI组件和服务。Java Business Integration (JBI,Java业务集成)技术规范定义了SOA的服务导向集成的内核和组成架构。它对公共讯息路径架构、服务引擎与捆绑的插件程序接口,以及复合型服 务描述机制等都进行了标准化,这样就将多种服务结合成为一个单一的可执行的和可审核的工作单元。JBI和ServiceMix关系图JBI并不是一个为开 发者设计的一个接口,更准确的说它是在JBI容器里为集成商提供相互集成的一个体系和一系列的接口。所以人们能集合他们所需要的所有部分,做出一个总体解 决。例如在理论你能从BPEL引擎上,EJB容器上或者是数据传输产品上集合一个基础设施,并且能够集成的很合适。 ServiceMix 中包含完整的JBI容器,支持JBI规范的所有功能要求:l 规范化消息服务和路由 l JBI管理Beans (MBeans)l 组件管理和安装的Ant任务l 对JBI部署单元的完全支持,支持JBI组件的热部署
5.RES Infomatic Service Bus
   RES Infomatic Service Bus是锐易特软件信息整合解决方案中最为核心的企业级信息服务总线产品。该产品理念与核心技术跟IBM、Oracle等国际主流厂商的ESB产品同步, 自2004年至今,经过了为期两年的国外产品原型设计和四年的国内本土研发与多行业重量级客户实践检验。广泛应用于金融、电信、政府、公共卫生等行业。它 是由七款子产品构成的产品家族,包含了Universal Adapters 通用适配器、Message Broker消息代理、Service Monitor服务监控中心、Service Proxy 服务代理、Registry and Repository 服务资源注册中心、Configuration Manager 配置管理中心、Integration Tools 整合开发工具集,这些子产品相互支撑、协同工作,共同构成分布式信息服务总线的开发、部署、运行、管理的SOA全生命周期支持。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/iteye_5305/article/details/81970128

智能推荐

消息对话框 有模式 和 无模式的 静态框 点击事件等14.4.22_vb取得网页上弹出的模式对话框的句柄-程序员宅基地

文章浏览阅读363次。#include "stdafx.h" #include "resource.h"HINSTANCE g_hInst = NULL; void onPaint(HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam){ PAINTSTRUCT ps={0}; HDC hDC=BeginPaint(h_vb取得网页上弹出的模式对话框的句柄

SQLite数据库使用like模糊查询中文问题_sqlite 判断表中含有中文-程序员宅基地

文章浏览阅读1.5k次。1.首先查看sqlite编码PRAGMA encoding;2.编写UTF-8与BG2312转换函数//UTF-8到GB2312的转换char* U2G(const char* utf8){int len = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0);wchar_t* wstr = new wchar_t[len+1];memset(wstr, 0, len+1);MultiByteToWideChar(CP_UTF..._sqlite 判断表中含有中文

如何在vue项目打包去掉console-程序员宅基地

文章浏览阅读173次。在项目中的build/webpack.prod.conf.js文件中new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false, drop_debugger: true, drop_console: true },添加此配置就可以在打包之后去掉控制台的打印输出转载于:...

postgresql之do language 执行匿名块_postgresql匿名块-程序员宅基地

文章浏览阅读901次。postgresql/sql-do/plgsql_postgresql匿名块

java中格林尼治时间的输出_Java中格林尼治时间和时间戳的相互转换-程序员宅基地

文章浏览阅读1k次。首先,将格林尼治时间转换为时间戳:/*** 格林尼治时间转换为时间戳*/public static long iso8601FormateTimeToLong(String time){String formateTime = iso8601ToCustomerDate(time,"yyyy年M月d日 HH:mm:ss");SimpleDateFormat sdf = new SimpleDate...

pythonmooc期末考试编程题_智慧职教moocPython程序设计期末考试查题公众号答案-程序员宅基地

文章浏览阅读134次。[多选] 用户通过GPRS接入外部网络可以实现的方式有()。[判断题] 在准备状态,用户被联到移动性管理,GPRS网络仅知道MS在那一个路由区域。()[多选] 网络金融具有()的特征。[判断题] 在同一小区下使用GPRS的用户之间互不影响。()[判断题] 用户上网速度同时受到无线部分网络与有线部分网络的影响。()[判断题] 用户上网速度同时受到无线部分网络与有线部分网络的影响。()[单选,A4型题..._python爬取智慧职教mooc信息

随便推点

比较xdm gdm kdm 三者之间的区别-程序员宅基地

文章浏览阅读2.5w次。转自:http://hi.baidu.com/dzzzb/item/9619ce3db7754a0fcfb9fee4(引导系统内核 )-> 启动画面 -> 登录界面 -> 用户桌面gdm -- gnome display managerkdm -- kde display managerxdm - X display manager作用是提供图形[登录]界面,gdm

使用impdp的networ_link从11.2.0.3向10.2.0.1同步数据时遭遇内部错误-程序员宅基地

文章浏览阅读1.9k次。为了减少数据落地时间,使用network_link远程抽取的方式导入数据,结果报错了:[rac11g1@oracle]$ username=ODSAML ;password=ODSAML ;impdp $username/$password directory=dumpdir logfile=$username.impdp.20120920.log network_link=${userna

Linux Centos7 下安装Mysql - 8.0.15-程序员宅基地

文章浏览阅读240次。Mysql有两种安装方式:源码包安装和二进制包安装本文描述的是二进制安装包,下载目录:https://www.mysql.com/downloads/步骤一:步骤二:步骤三:因本人的虚拟机是仅主机模式,所以需要先将在本地安装的Mysql安装包上传到虚拟机上命令:rz 解压到/usr/local/目录下[root@centos7 ~]# tar xf mysql-8.0.15-linux-gli..._linux centos7 下配置mysql - 8.0.15

Error: utils/validate_data_dir.sh: file data/sre/utt2spk is not in sorted order or has duplicates-程序员宅基地

文章浏览阅读6.2k次。之前也遇到过,就是没有排序或者是有重复的,加一个 sort -u 就好了。但是今天这个错误和另一个错误交替出现,调了两个多小时,差点砸笔记本了,还有一个错误是: Error : ” utt2spk is not in sorted order when sorted first on speaker-id fix this by making speaker-ids prefixes of

Java集合Stream类filter的使用_java stream filter-程序员宅基地

文章浏览阅读10w+次,点赞73次,收藏207次。之前的Java集合中removeIf的使用一文写了使用removeIf来实现按条件对集合进行过滤。这篇文章使用同样是JDK1.8新加入的Stream中filter方法来实现同样的效果。_java stream filter

POI操作word2010实现多级标题结构-程序员宅基地

文章浏览阅读2w次,点赞12次,收藏35次。一、 问题背景:项目中会生成word的报告,但是直接io流写的报告都是“正文”,没有生成标题,也就没法在大纲结构中方便的查看章节内容了。搜了很多资料也请教了一些同事,终于把这个目录结构的问题搞定了,在此和大家分享一下。目前我们用的是office2010,因为word2010(2010版本word结构和2007差不多,应该也适用于2007)与word2003的巨大差异,本方法可能不适用过低版