JBI的主要目的是提供一個基于服務(wù)的平臺作為對現(xiàn)有Java/J2EE平臺功能的擴(kuò)展。
JBI是一個比較新的Java標(biāo)準(zhǔn),其評審工作仍在進(jìn)行。
雖然如此,JBI中至少有一個方面已經(jīng)流行開來,下面就是它所使用和定義的術(shù)語和模式:
·綁定組件:理解特定的協(xié)議并能夠?qū)⑵滢D(zhuǎn)化為一種標(biāo)準(zhǔn)或常見的系統(tǒng)級協(xié)議的軟件組件。它們用作系統(tǒng)的入口點(diǎn)和出口點(diǎn)。也稱為適配器。
·服務(wù)引擎:負(fù)責(zé)處理請求(通常通過轉(zhuǎn)換的手段)的軟件組件。例如,XSLT轉(zhuǎn)換程序、BPEL引擎、規(guī)則引擎等等。
·消息交換:消息交換協(xié)議。常見的交換模式有請求-響應(yīng)、in-only等等。
·組建安裝:靜態(tài)或動態(tài)地向運(yùn)行時環(huán)境添加可執(zhí)行的軟件組件。
·服務(wù)部署:靜態(tài)或動態(tài)地向已安裝的組件添加可執(zhí)行的服務(wù)(或應(yīng)用程序)。
·服務(wù)程序集:一組服務(wù)。
標(biāo)準(zhǔn)是用來實(shí)現(xiàn)互操作性和可移植性的,但是它們在方便通信方面的重要性也不可忽視。
在JavaOne大會上已經(jīng)能夠聽到相當(dāng)數(shù)量的關(guān)于JBI的談?wù)摿?,而且我們也會在近期?nèi)首次發(fā)布一個開源JBI容器和組件套件ServiceMix,這一切都相當(dāng)令人高興。我不清楚是不是所有的人都對JBI有了一定的了解,因?yàn)樵贘avaOne大會上一些關(guān)于JBI的討論中,我看到某些與會者臉上流露出困惑的表情。我想我們需要一些文章來解釋一下什么是JBI、其重要的思想是什么,以及如何使用JBI。
首先,可以簡要的將JBI描述為一個用于規(guī)范化信息服務(wù)和路由器的簡單API,這個API包含了一些用于部署集成服務(wù)的組件和管理模型。這里指的需要部署的集成服務(wù)主要包括路由引擎、BPEL引擎、角色系統(tǒng)或傳輸引擎等等。
JBI提供了一個合理的XML信息傳輸網(wǎng)絡(luò),通過這個網(wǎng)絡(luò)對HTTP、電子郵件和JMS/MOM等進(jìn)行良好的映射,使得這種網(wǎng)絡(luò)能夠方便地應(yīng)用在現(xiàn)有的遺留系統(tǒng)、二進(jìn)制傳輸和RPC系統(tǒng)(例如EJB或CORBA)之中。你可以把它想象成在JMS之上的邏輯抽象層,支持多種不同的消息交換機(jī)制(例如傳統(tǒng)的“請求與應(yīng)答”方式)。
綁定組件(binding components)處理和所有的傳輸管道以及協(xié)議相關(guān)的內(nèi)容,然后由工作在邏輯XML層的服務(wù)引擎組件(service engine components)提供基于路由、控制、規(guī)則、傳輸或自定義增強(qiáng)功能的內(nèi)容。
這樣一來,BPEL引擎就不用再處理所有可能用到的協(xié)議、傳輸設(shè)備及線纜格式了,這些工作可以全部交給JBI來做,JBI會為物理路由或服務(wù)終端點(diǎn)完成這些工作。與此類似,基于內(nèi)容的路由器、規(guī)則引擎、傳輸引擎也可以搭乘JBI這班車,自己則完成自己分內(nèi)的工作。基于這點(diǎn),我認(rèn)為JBI是一套很棒的適合集成組件開發(fā)者的API。
當(dāng)然,很多應(yīng)用程序開發(fā)者仍舊喜歡開發(fā)POJO服務(wù)、把這些服務(wù)放到自己的容器中,然后以Web services的形式進(jìn)行應(yīng)用,在這種情況下他們也許不會直接使用到JBI API。但是,JBI提供了一種使得中間件、集成廠商和OSS項(xiàng)目能夠在ESB級別共同協(xié)作運(yùn)行的方法,這種方法對于像我們公司這樣的集成組件開發(fā)公司而言是非常有意義的。