支持 SUN JSR 208规范: Java Business Integration (JBI) , 采用 Apache 许可协议。
关于JBI及JBI容器:
Java Business Integration,JBI的本质是一种服务总线思想,它的目的是创建一个用于各种Java组件服务集成的运行环境,其JBI的核心总线结构支持插件操作。
JBI的具体实现即是一个JBI容器,它以一种可插拔的方式集成不同类型的服务,而不是通过编写客户端代码来实现服务的集成。
SOA在Java领域有两套标准:一个是SUN推出JBI,另外一个是IBM和BEA等公司推出的SCA和SDO标准。随着SUN公司被收购,SUN之外的几个巨头都力推SCA标准,JBI恐将名存实亡,难以得到重用。
JBI架构:
架构说明:
1,JBI规范主要有六部分组成:绑定组件BCs(Binding Components),服务引擎SEs(Service Engines)、标准消息路由器NMR(Normal Message Router)、传输通道Delivery channel、服务单元SUs (Service units)、服务集合Sas(Service assemblys);
2,绑定组件BCs的目的有两个:a,利用协议(如HTTP/S, JMS, FTP, SMTP, XMPP, RMI, CORBA等等)与外部应用进行远程通信;b,对消息进行标准化处理(正反向);
3,服务引擎SEs负责提供一些ESB中的功能如消息转换、服务编排、消息路由等,还实现一些其他常用的功能如rules engines, BPEL engines, XSLT engines, scripting engines, EJB continers等。各种SE只能通过NMR进行通信,如果一个SE需要与外部进行通信则需要利用NMR将消息传送给BC,由BC负责与外部的通信;
4,NMR是JBI内部消息系统的核心,所有组件(SE、BC)之间不能直接交互,只能通过NMR来传递。在JBI环境里,只有一种标准的消息(Normalized Message),外部消息进入JBI前,需通过BC转换为标准消息,再有NMR转发。
5,Delivery channel负责连接JBI组件(BCs和SEs)到NMR,提供诸如消息队列等功能;
6,SU是JBI使用者编写的服务,包含具体业务逻辑等,其中包含了一个xml配置文件(xbeans.xml)和依赖库等,配置文件用来说明如何使用JBI组件(BCs和SEs),最终的执行都是在这些JBI组件中进行的,每个SU打包成一个zip文件,但必须放在SA中才能部署到JBI容器中。
7,SA包含一组SU,通过一个jbi.xml描述包含的SU,每个SA打包成一个zip文件,可部署到JBI容器中。
8,JBI提供了一种插件机制,上述BCs、SEs、SAs都可以作为插件插入到系统中,并可以实现动态热部署。
9,用户可以根据需要开发自己的BC和SE。
10,提供JMX支持,可以对JBI容器进行监控,如JBI组件的安装、部署等;
Servicemix除了实现JBI规范外,还增加了一些特性如:
1,提供了丰富的SE和BC组件,基本满足常见需求;
2,支持与Spring的集成;
3,支持与Apache Camel的集成,可利用其提供更灵活、强大的路由功能;
4,使用ActiveMQ提供远程、集群、可靠性和分布式故障转移等;
5,Servicemix4实现了对OSGI的支持;
使用了Servicemix的公司主要有: 雷神公司、英国电信、CVS/pharmacy、思科、Sabre Holdings。