top
Loading...
通過JCA實現企業級應用程序的“即插即用”

對于那些有多個企業信息系統的公司,把這些企業信息系統整合起來是實現最高效率是至關重要的。JCA(Java Connector Architecture) 提供了一個應用服務器和企業信息系統連接的標準Java解決方案,以及把這些系統整合起來實現最好的工作效率的方法。因為J2EE對企業級應用程序集成的支持已經非常小了(本質上,JMS和XML可以使用JAX應用程序編程接口支持它),Sun和它的Java Community Process伙計建議把J2EE Connector Architecture ( J2EE連接器體系結構,JCA)作為J2EE規范的1.3版的一部分。因為JCA提供了整合不同種類的企業信息系統的一套標準的體系結構,使用它的企業信息系統供應商就不再需要為每個應用服務器定制它們的產品。遵守這個規范的應用程序服務器供應商在它們想增加新的企業信息系統連接的時候將不需要添加自定義代碼了。最好的事情就是,需要從J2EE應用程序中訪問企業信息系統產品的用戶不需要學習或者再學習不同的應用程序編程接口,因為JCA定義了一套公共的客戶接口。

JCA內幕

JCA定義了一套標準的接口,用于讓連接器把兼容的應用程序服務器無縫的整合起來。同時,另一套標準接口允許客戶(或者應用程序服務器的應用程序主機)用一種統一的方法使用連接器。這樣通過JCA連接器對于跨應用程序服務器來說就是可移植的,而客戶程序也是很輕便的連接器。

遵守JCA規范的連接器被稱作資源適配器(resource adapter)。每個資源適配器都被要求支持兩套標準接口∶一組接口被應用程序服務器使用來與適配器交互作用,而另一套由客戶/消費者使用與企業信息系統(當然也是通過適配器)相互作用。

JCA考慮到資源適配器可以把客戶端程序作為專有接口的替代,但是這可能會在后續的版本改變。我強烈地建議你始終支持標準客戶端。其實也并沒有多少額外的工作要做,就像我在這個例子資源適配器中要演示的一樣。但是,在我們深入研究這個例子之前,讓我們先來看看系統-客戶端接口。每個遵守JCA規范的資源適配器必須支持一套應用程序服務器用來管理適配器的標準接口。這套接口是在適配器和應用程序服務器之間的系統級協約,是由JCA委托的。

一臺應用服務器可以有多個資源適配器,但是每個企業級信息系統類型只有一個適配器。舉例來說,一臺應用服務器可以為SAP,Oracle各自分配一個資源適配器。應用服務器和資源適配器關系緊密共同管理企業信息系統訪問中的三個關鍵性方面∶連接,事務和安全。為此目的,JCA定義了一套標準接口,在javax.resource.spi和javax.resource.spi.security包中定義,是所有的資源適配器必須實現的。這些接口允許應用服務器與資源適配器相互作用并且控制連接,事務和安全管理的處理。

創建資源適配器首先要正確地實現系統協定,而且它也帶來了許多好處,我們舉例子來說明其中一個好處,使用一個有連接管理協定的資源適配器能使應用程序服務器連接到一個基本企業級信息系統。這使一個可縮放的應用程序環境可以支持很多的需要訪問企業級信息系統的客戶。

另一個好處可以通過實現事務管理協定來實現,這就是支持對企業級信息系統資源管理者的事務性訪問。這個協定使一個應用程序服務器能夠使用事項管理程序在多個資源管理程序之間管理事務。比如說,這將允許一個事務會話bean通過Java數據庫連接(JDBC)和一個應用程序服務器控制的相同事務中的SAP系統訪問一個關系數據庫。事務協約也支持那些被一個企業級信息系統資源管理程序內部管理的事務,也就是本地事務,而不必涉及企業外部事務管理。

還有一個好處就是充分考慮訪問企業級信息系統的安全性協定。這個協定提供了對安全的應用環境的支持,減少了威脅信息系統安全的可能,并且還能夠保護信息系統管理的有商業價值的信息資源。

這些優點均可用于應用程序服務器的資源適配器,而不必再寫任何自定義代碼。這就大大刺激了企業信息系統的提供商為系統創建高級的資源適配器。

此外,JCA還定義了客戶/消費者使用的另一套與企業信息系統交互的接口。JCA調用了公共客戶接口( Common Client Interface,CCI)。CCI是一個應用程序開發者和客戶程序可以共同連接和訪問后端系統的程序接口。它是一個類似于JDBC的低端的API。CCI管理應用程序和系統之間的數據流動,而不會讓我們看到任何的容器和應用程序服務器所做的事情。CCI是為了某些特別的目的設計的。首先,它能夠跨越許多種類型的企業信息系統;其次,這個應用程序接口被設計的非常易用,而且是可擴展的。CCI可以更進一步的構建更具體的企業信息系統功能。

CCI被分成四部分(見表1)。所有的具體CCI類和接口都可以方便的在javax.resource.cci程序包中被找到。

接口類型 名稱
與連接有關的接口,描述一個工廠類連接和一個應用程序類連接。javax.resource.cci.ConnectionFactory
javax.resource.cci.Connection
javax.resource.cci.ConnectionSpec
javax.resource.cci.LocalTransaction
與交互有關的接口,能使組件驅動一個與EIS實例的交互。javax.resource.cci.Interaction
javax.resource.cci.InteractionSpec
與數據表現有關的接口,用來描述與EIS實例交互中涉及到的數據結構。javax.resource.cci.RecordFactory
javax.resource.cci.Record, javax.resource.cci.MappedRecord, javax.resource.cci.IndexedRecord
javax.resource.cci.IndexedRecord
javax.resource.cci.ResultSet
java.sql.ResultSetMetaData
與元數據有關的接口,提供了一個資源適配器與EIS連接的基本的元信息。javax.resource.cci.ConnectionMetaData
javax.resource.cci.ResourceAdapterMetaData
作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗