在JavaOne大會上已經(jīng)能夠聽到相當數(shù)量的關(guān)于JBI的談論了,而且我們也會在近期內(nèi)首次發(fā)布一個開源JBI容器和組件套件ServiceMix,這一切都相當令人高興。我不清楚是不是所有的人都對JBI有了一定的了解,因為在JavaOne大會上一些關(guān)于JBI的討論中,我看到某些與會者臉上流露出困惑的表情。我想我們需要一些文章來解釋一下什么是JBI、其重要的思想是什么,以及如何使用JBI。
首先,可以簡要的將JBI描述為一個用于規(guī)范化信息服務和路由器的簡單API,這個API包含了一些用于部署集成服務的組件和管理模型。這里指的需要部署的集成服務主要包括路由引擎、BPEL引擎、角色系統(tǒng)或傳輸引擎等等。
JBI提供了一個合理的XML信息傳輸網(wǎng)絡(luò),通過這個網(wǎng)絡(luò)對HTTP、電子郵件和JMS/MOM等進行良好的映射,使得這種網(wǎng)絡(luò)能夠方便地應用在現(xiàn)有的遺留系統(tǒng)、二進制傳輸和RPC系統(tǒng)(例如EJB或CORBA)之中。你可以把它想象成在JMS之上的邏輯抽象層,支持多種不同的消息交換機制(例如傳統(tǒng)的“請求與應答”方式)。
綁定組件(binding components)處理和所有的傳輸管道以及協(xié)議相關(guān)的內(nèi)容,然后由工作在邏輯XML層的服務引擎組件(service engine components)提供基于路由、控制、規(guī)則、傳輸或自定義增強功能的內(nèi)容。
這樣一來,BPEL引擎就不用再處理所有可能用到的協(xié)議、傳輸設(shè)備及線纜格式了,這些工作可以全部交給JBI來做,JBI會為物理路由或服務終端點完成這些工作。與此類似,基于內(nèi)容的路由器、規(guī)則引擎、傳輸引擎也可以搭乘JBI這班車,自己則完成自己分內(nèi)的工作?;谶@點,我認為JBI是一套很棒的適合集成組件開發(fā)者的API。
當然,很多應用程序開發(fā)者仍舊喜歡開發(fā)POJO服務、把這些服務放到自己的容器中,然后以Web services的形式進行應用,在這種情況下他們也許不會直接使用到JBI API。但是,JBI提供了一種使得中間件、集成廠商和OSS項目能夠在ESB級別共同協(xié)作運行的方法,這種方法對于像我們公司這樣的集成組件開發(fā)公司而言是非常有意義的。