標籤:名稱 配置 客戶 .com term 查詢 lan 可靠 代碼
JCA (J2EE 連接器架構,Java Connector Architecture)是對J2EE標準集的重要補充。因為它注重的是將Java程式串連到非Java程式和軟體包中介軟體的開發。連接器特指基於Java連接器架構的來源配接器,其在J2EE1.3規範中被定義。JCA連接器同時提供了一個重要的能力,即它使J2EE應用伺服器能夠整合任何使用JCA適配器的公司資訊系統(EIS),大大簡化了異構系統的整合。有了JCA,企業只要購買一個基於JCA規範的適配器,就可以將公司專屬應用程式部署到J2EE伺服器上,這樣不用編寫任何代碼就可以實現與J2EE應用伺服器的整合。JCA還提供了一個應用伺服器和EIS串連的標準Java解決方案。
JCA定義了一套標準的介面,用於讓連接器把相容的應用程式伺服器無縫的整合起來。同時,定義的另一套標準介面允許客戶(或者應用程式伺服器的應用程式主機)用一種統一的方法使用連接器。這樣,連接器對於跨應用程式伺服器就是可移植的,而客戶程式成為很輕便的連接器。
JCA的目標在於企業應用程式整合方面,它提供的標準化體繫結構讓J2EE組件能夠對異構EIS進行“隨插即用”的訪問,其中包括ERP、交易處理、老式資料庫系統等。
JCA與EIS整合應用
在電子商務時代,具有網際網路功能的商務應用程式,以及在網際網路上整合業務處理已經成為各大廠商獲得競爭優勢的基礎。不過在網際網路經濟之前,許多公司已經在業務和管理資訊應用系統方面進行了大量的投入,如:
◆ 企業資源規劃(Enterprise Resource Planning,ERP)應用,如SAP R/3和BAAN。
◆ 客戶關係管理(Customer Relationship Management,CRM)應用,如Siebel和Clarify。
◆ 資料庫應用程式,如DB2和Sybase。
◆ 大型交易處理應用,如CICS。
◆ 老式資料庫系統,如IBM公司的IMS。
這些系統一般稱為公司資訊系統(EIS ,Enterprise Information Systems)。EIS為整個企業提供資訊基礎設施和服務。這些資訊的形式可能是—個資料庫中的一組記錄、一個ERP中的業務對象、一個CRM系統的工作流程對象,或者是一個交易處理應用程式中的事務程式。
在連接器出現之前,一些應用程式伺服器廠商為整合EIS系統提供了各種可自訂的適配器。這些適配器還提供了自訂的本機介面。但這些內容很複雜,不易理解,並且因為它們試圖支援一種標準體繫結構而受到限制。其中一些具體的限制情況如下:
◆ EIS的應用程式編程本身是專用的,而應用系統的多樣性表明沒有適用於與開放式體繫結構整合的通用介面機制。
◆ 大型Web應用程式要求在客戶、串連管理等方面具有高可用性和可擴充性。傳統情況下,客戶的數量及他們的活動串連在—個EIS中代價是昂貴的,並且自訂的適配器也缺乏應用程式伺服器提供的串連管理機制。
◆ 管理眾多後端應用的安全性和分散式交易極其複雜並且缺乏可靠的機制。這意味著現在沒有標準的基礎設施解決方案來提供一個比較中性的安全性機制,也沒有對眾多EIS資源管理員的通用交易管理支援。這種情況對於EAI實現會帶來巨大的問題。
考慮到上述痛點,Su公司發布了JCA,以便為J2EE伺服器與異構EIS資源的整合提供一個標準的體繫結構。其主要目標是,通過在一個一致的J2EE環境中定義一個通用的API及一組通用的服務來簡化開發過程。JCA為開發人員提供了一種容易的辦法,以便把EIS與J2EE系統平台組件無縫地整合起來。圖1顯示了一個帶有JCA的組件和EIS整合應用的結構圖。
從圖1可看出,如果需要把一個基於J2EE的應用程式與一個現有的EIS整合起來,所需做的就是把適當的EIS連接器(一個遵守JCA規範的資來源配接器,即Resource-adapter)安裝到應用程式伺服器上。安裝了這個適配器之後,我們可以開發J2EE組件,以便使用CCI( Common Client Interface,通用客戶介面)API與EIS介面。採用的方式與使用JDBC與關聯式資料庫介面相同。也就是說,通過採用非EIS專門化的編程而簡化開發,並且所做配置與後端EIS完全獨立。
Sun的想法是,所有應用程式伺服器廠商最終都會實現JCA服務,並且EIS廠商將實現遵守JCA規範的EIS資來源配接器。通過支援JCA,所有遵守J2EE的應用程式伺服器都可以保證能夠處理眾多和異構的EIS資源。因此,JCA既提高了J2EE應用程式開發人員的生產率,同時又通過J2EE提供一個可以擴充的整合方案,減少了開發成本,並且保護了在EIS系統中的現有投資。
J2EE連接器體繫結構及其元素
JCA是在一個遵守J2EE 1.3規範的應用程式伺服器上實現的,同時有一個由EIS廠商提供的遵守JCA的資來源配接器。這個資來源配接器在應用程式伺服器中是—個EIS專用的可插入J2EE組件,它提供了一個用於與基層EIS系統通訊的介面。JCA定義了下列元素和服務:
◆ 系統級合約(Contract)和服務,定義了J2EE組件、應用程式伺服器提供者和EIS系統之間的標準介面。這些合約和服務是由J2EE伺服器提供者實現的,並且也位於EIS廠商的資來源配接器中。這些合約和服務的實現在應用程式伺服器與資來源配接器的系統級角色和責任之間定義了一個邏輯劃分(不是物理劃分)。這樣就使J2EE伺服器和資來源配接器能夠彼此協作。不僅如此,它還使得一個遵守JCA規範的資來源配接器可以插入到任何J2EE伺服器中。
◆ JCA通用客戶介面(CCI),定義J2EE組件(如JSP、EJB)可以用於串連到EIS系統或者與之互動的一個客戶API。除了J2EE客戶組件之外,它還允許未管理應用程式(如Java applet和應用程式客戶)使用一個遵守JCA的資來源配接器與一個EIS整合。
◆ 打包和實施介面,允許各種EIS資來源配接器插入J2EE應用程式中。
圖2顯示了J2EE連接器體繫結構和訪問EIS資源的組件。資來源配接器很明顯被看作了JCA的基礎組件,因為它用作J2EE組件、應用程式伺服器和EIS系統的中央連接器。
在一個使用JCA的J2EE應用程式架構中,EIS廠商提供了遵守JCA的資來源配接器,並且CCI作為實現的組成部分。J2EE伺服器廠商提供了支援JCA系統級合約的應用程式伺服器,從而使得這些資來源配接器可以插入到應用程式伺服器,並且提供與基層EIS資源的串連能力。這樣就使J2EE應用程式開發人員可以使用CCI開發整合組件。
JCA技術規範支援兩類環境,劃分的基礎是使用資來源配接器的客戶應用程式類型,這兩類環境為:
◆ 管理的環境 定義一個多層、具有Web能力、基於J2EE並且訪問EIS的應用程式。這個應用程式可以包含一個或者多個應用程式組件(例如EJB、JSP網頁、servlet),它們都實現在各自的容器中。在JCA的上下文環境中,這些應用程式被稱為是管理的應用程式。
◆ 不管理的環境 連接器體繫結構支援Applet或者Java客戶應用程式這樣的方式訪問EIS。典型情況下這是一個兩層體繫結構,其中一個應用程式客戶直接使用一個資來源配接器庫。資來源配接器為客戶提供了低級的事務和安全性處理。在一個JCA上下文環境中,這些應用程式稱為不管理的應用程式。
資來源配接器及其合約
資來源配接器包含一個EIS專用的庫(它可以用Java編寫或者用本機介面組件),並提供了與EIS的串連能力。在J2EE應用程式伺服器中,資來源配接器運行在應用程式伺服器的地址空間中,並且管理著對基層EIS的串連。
JCA要求所有遵守JCA的EIS資來源配接器及J2EE應用程式伺服器支援系統級合約。JCA還推薦(但並不規定)所有的資來源配接器都像對待它們的客戶API一樣支援CCI。這樣就為應用程式開發、整合多個EIS提供了一個基於J2EE的解決方案,並且使EIS資來源配接器“具有插入能力”,可以用於應用程式伺服器中,並與所有的系統級機制協作。
一般情況下,在上下文環境中的一個合約就是在應用程式各層之間一個簡單的責任陳述,這個應用程式實現了這些層之間的一個標準介面。根據JCA技術規範,資來源配接器一般實現兩類合約。這兩類合約為:
◆ 應用程式合約
應用程式合約定義了CCI API,通過這個API,—個J2EE客戶組件(例如一個EJB或者servlet)可以與基層EIS資源通訊。
◆ 系統級合約
系統級合約定義了一組系統合約,可讓資來源配接器與應用程式伺服器連結起來。JCA技術規範為資來源配接器和J2EE應用程式伺服器的實現定義了許多系統級合約。
串連管理
串連管理由服務合約表示,這個服務合約使—個應用程式伺服器能夠提供自己的服務,以產生和管理與基層EIS資源進行串連的串連緩衝池。這樣就提供了一個可以擴充的串連管理設施以支援大量的客戶。
交易管理
這個合約把應用程式伺服器的交易處理能力擴充到了基層的EIS資源管理員。在JCA的上下文環境中,一個EIS資源管理員管理著一組共用的EIS資源以參與交易處理。一個資源管理員可以管理XA事務和本地事務兩類事務。
安全性管理
這項服務讓開發人員可以定義應用程式伺服器和EIS資源之間的安全性。有多種機制用於保護EIS不受未授權的訪問及其它安全性威脅,其中包括:
1. 使用標識符、驗證和授權機制;
2. 應用程式伺服器和EIS資源之間實現安全通訊,使用像Kerberos這樣的開放網路通訊安全性通訊協定,這樣可以為驗證和機密服務提供端對端的安全性;
3. 啟用EIS專用的安全機制,J2EE伺服器和EIS資來源配接器之間的安全性合約,實際上把串連管理沿著安全性的方面進行了擴充。這種安全性合約提供了如下的一個EIS簽發(sign-on)機制:
◆ 把串連請求從資來源配接器傳遞到J2EE應用程式伺服器,並且開啟該伺服器的驗證和授權服務;
◆ 在資訊安全內容環境中,把安全機密憑證資訊從應用程式伺服器傳遞到資來源配接器。
通用客戶介面(CCI)
CCI提供了一個簡單的方式來解決編寫基層EIS資源更複雜的、Java介面的問題。出現了CCI之後,這個問題已經成為Java開發人員和EIS廠商之間都知道的“整合問題”。通過在資來源配接器中實現CCI,EIS廠商可以提供對它們的EIS產品的一個Java介面,它將在任何遵守J2EE 1.3規範的應用程式伺服器上運行。
CCI為J2EE應用程式組件定義了一個獨立於EIS的客戶API,它為運行與EIS相關的查詢和EIS交易處理定義了遠端函式呼叫介面,還可以用於獲得結果。
CCI為J2EE應用程式伺服器提供了功能調用,它通過一個JCA資來源配接器提供的組件,產生和管理與一個EIS資源的串連,執行與一個EIS資源有關的操作。
JCA技術規範推薦,CCI應該形成更豐富功能的,並且成為一個由EIS資來源配接器廠商提供的更豐富的編程模型,而不是成為多數應用程式開發人員使用的API。JCA技術規範還推薦,所有EIS資來源配接器應把CCI作為它們的客戶API實現,同時它仍然要求這些資來源配接器提供與J2EE應用程式伺服器相關的系統合約。需要注意的是,一個資來源配接器還可以選擇與CCI不同的附加客戶API,類似於在JDBC實現中可以使用廠商提供的客戶API一樣。使用CCI極大地提高了開發人員的生產率,減少了系統整合的成本,使代碼具有可移植性,應用程式可以擴充,以及良好的可維護性。
CCI被分成四部分(見表1)。所有的具體CCI類和介面在javax.resource.cci程式包都可以方便地找到。
表1 CCI介面與類
<ccid_nobr>
介面類型 |
名稱 |
與串連有關的介面,描述一個工廠類串連和一個應用程式類串連。 |
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 |
資來源配接器的打包和實施
JCA定義了打包和實施介面,所以各種資來源配接器可以很容易地以一種模組化和可移植的方式,插入一個遵守J2EE規範的應用程式伺服器。這種模組稱為資來源配接器模組,它與J2EE應用程式模組相似,可以包括Web和EJB組件。
圖3顯示出一個資來源配接器模組的打包和實施過程,這個模組將用於串連一個J2EE應用程式和一個EIS資源。典型情況下這個過程與在一個J2EE容器中實施EJB或Web組件相似。一個資源模組的打包和實施過程如下:
◆ EIS資來源配接器提供者(通常是EIS廠商)開發一組Java介面和公用程式類作為資來源配接器實現的組成部分。這些Java類實現了JCA合約和資來源配接器提供的EIS專門功能。
◆ Java類及資來源配接器提供者提供的本機庫(如果可用)被打包,同時還有一個實施描述符,構成一個資來源配接器模組(RAR檔案),與其它J2EE組件實施描述符類似, 資來源配接器模組的實施描述符定義了資來源配接器提供者與負責資來源配接器的實施者之間的服務合約屬性。
◆ 在實施過程中,應用程式實施者在一個應用程式伺服器上安裝一個資來源配接器模組,然後利用J2EE應用程式伺服器進行配置,並且確定基層EIS環境目標。
一個應用程式的資來源配接器模組打包和實施過程類似於其它J2EE打包和實施過程,特別是與Web和EJB組件相似。但是,在打包和實施資來源配接器中涉及到的角色和責任與其它J2EE組件的相應過程稍有不同。資來源配接器打包的一個EIS資來源配接器就是一個包含在一個RAR檔案檔案中的J2EE伺服器組件。它可以在一個目錄中準備一個或者多個資來源配接器,並且把它們打包成.rar檔案。
J2EE: JCA (Java Connector Architecture) [轉]