Java的進展都是圍繞著JSR形式的規格說明書進行的。最近,這個家族中又新添了一個成員,那就是JBI(Java Business Integration)。它是一種企業服務總線(Enterprise Service Bus,ESB),用于形成一種關鍵基礎設施片段,使我們能夠用Java實現面向服務的架構。我們將在本文中探討JBI有關概念以及一種名為SeviceMix的開源實現。
JBI的主要目的是提供一個基于服務的平臺作為對現有Java/J2EE平臺功能的擴展。由于Web services已經實際應用于J2EE中,而且ESB和SOA等術語與其說是技術推動力倒不如說更是市場概念,所以讓我們一起來深究一下到底什么是Java/J2EE中所謂的“基于服務的平臺”。
當前的J2EE部署都運行在一個基礎上,那就是應用服務器。應用服務器本身由兩個獨立的部分組成——Servlet容器和EJB容器,它們分別用于部署JSP/Servlets和EJB構件。在它們中的任何一個,你都能使用Web services。但是,在任何環境中以分散的方式使用services是很困難的工作,而JBI的目的就是為完成這個任務提供一個專門的環境。
JBI的最底層是一個容器,它與J2EE中的容器一樣定義了自身的部署構件。在我們深入之前,讓我們先詳細了解一下JBI的主要構想。
首先,它關注了Web services的核心部分:在終端之間傳輸的SOAP 消息/信封。這種數據段或標記能夠包含被服務于很多應用的信息。不僅如此,根據發送端或接受端的不同,它還能協助把某個業務邏輯與數據適配。
現在,回過頭來看看今天的Web services。在Web services出現之前,對于很多企業應用來說,使用面向消息的中間件系統或者MOM實現異構系統之間的通信已經足夠了。Web services的出現同樣是處于這個目的。用MOM的基于消息的架構和Web services很類似,被服務的數據也能在應用之間進行無縫操作。
這種場景可以被應用到典型的J2EE環境中,并通過JMS或JAX-RPC等技術進行服務。這種做法對簡單部署是可行的,但正如前面提到的,當進行很復雜的設計時,現有的容器則顯得很難用。于是JBI試圖解決這個問題。
JBI提供了一種正規消息路由器(Normalized Message Router,NMR),說白了,就是一個地點。在這個地點,所有基于消息的數據片段——SOAP片段、MOM消息、HTTP數據或其它信息——被聚合、集中、應用到業務邏輯、傳輸,如果有必要則被轉換成其它格式并隨后被分派到最終目的地。
先前的描述說明了為什么JBI被稱為ESB。它很適合企業級應用,因為它通過一種總線型架構的基于消息的手段到達了適應大范圍的消費者和提供者的目的?,F在,讓我們看看除了NMR還有什么構成了JBI。
和JBI環境直接交互的是兩個部分,JBI machine和JBI binding。JBI machine定義了部署構件以及在環境中管理它們的方式。本質上,它是提供商設計的黑盒,用于在JBI中支持他們自己的模型。另一方面,JBI binding則被環境通過專門的業務協議與外部世界進行通信。
原文轉自:http://www.anti-gravitydesign.com