什麼是JCA?它最吸引人的特點是什麼?它有什麼不足之處?有哪些廠商支持JCA?是否還存在替代JCA的產品
以便選購時貨比三家?本文將幫助你解答所有這些問題
JCA及其特點
JCA即Java Connector Architecture
或Java連接器體系
它完善了用J
EE構造企業應用的技術體系
在JCA出現之前
基於J
EE應用服務器的開發體系為企業應用各個部分提供了相應的開發工具
但是
與傳統系統連接的部分仍未得到很好的解決
為了與這些EIS系統集成
各個公司為每一種系統提供了定制的開發工具
有了JCA
應用服務器廠商就能夠為Java平台組件與後端系統的連接提供一層抽象
應該說
JCA完全符合J
EE應用服務器市場的自然發展歷程
在JCA出現之前
人們在連接EIS時面臨著一系列類似的問題
首先
每一個EIS應用有自己的編程接口
與一個異種的EIS應用交互意味著要針對一組特定的API編程
因此
人們需要一組公共的客戶端接口
以便簡化客戶端編程
其次
與後端EIS系統的交互通常總是很繁忙
為了降低連接開銷
提高性能
人們需要連接池
第三
與EIS應用的連接往往是面向事務的
為了保證數據完整性
人們需要內建的事務支持
以便把編程工作量降低到最少限度
最後一點(但並非最不重要的一點)是人們迫切需要提高EIS應用和EIS客戶程序集成的安全性
仔細分析上述問題
可以發現
它們與人們以前連接數據庫時面臨的問題相似
對於數據庫連接
由於JDBC API之類的技術被廣泛采用
問題已經得到解決
作為一個程序員
你現在再也不必直接與數據庫交互
而是可以通過JDBC與數據庫交互
JDBC接口對於所有流行的數據庫系統來說都是一樣的
你可以方便地使用數據庫連接池
卻不必自己動手實現它
你可以方便地使用事務支持和安全集成能力
因為這些功能都是內建的
要是對於EIS應用也有類似JDBC的技術
它一定能夠為你帶來不少方便吧?如果你的回答是肯定的
答案就是JCA
為了解決連接EIS時面臨的各種問題
JCA提供以下功能
▲ 連接緩沖池
EIS連接通常屬於昂貴的資源
創建EIS連接需要大量的時間開銷
連接池使得應用服務器能夠創建和共享EIS應用的連接
使得應用能夠更高效地使用昂貴的連接資源
▲ 事務管理
事務管理能力使得EIS應用能夠獲取應用服務器提供的事務環境的支持
使得服務器能夠把EIS系統的事務作為一個單元管理
▲ 安全
安全接口的實現允許應用服務器在不影響EIS特有安全機制的情況下
對整體安全性進行有效的管理
驗證
授權和安全關聯都屬於該接口包含的范圍
它們都屬於為JCA適配器和J
EE應用服務器內建的服務
▲ 公共的客戶端接口
JCA還定義了用戶級的編程接口
稱為公共客戶端接口(CCI
Common Client Interface)
這個接口集在JCA
中是可選的
允許EIS客戶程序的開發者按照一種標准的方式
連接目標EIS系統
或與目標EIS交互(執行命令並獲取結果)
應用服務器的JCA支持
對JCA的支持來自兩個方面
支持JCA的應用服務器
支持JCA的EIS應用適配器
JCA
是J
EE
規范的一部分
遵從J
EE
規范的應用服務器必須提供合適的環境支持必要的JCA功能
包括緩沖池
事務和集成的安全機制
表一列出了常見的應用服務器以及它們的JCA支持情況
表一
JCA支持現狀
BEA的WebLogic Server是最早支持JCA的應用服務器之一
從
年開始
WebLogic
就內建了對JCA Beta的支持
當時的JCA
規范正處於最終草案狀態
經過一年的發展之後
多次獲獎的WebLogic Server已經是支持JCA的最佳應用服務器之一
IBM的WebSphere應用服務器是另一個廣受歡迎並獲獎的J
EE應用服務器
年中期左右
它開始支持JCA
JBoss也是值得特別指出的應用服務器
如果預算比較緊張
你就應該注意一下這個應用服務器
JBoss也支持JCA
而且它具有無可比擬的價格優勢
它是免費的!
適配器廠商和產品
連接後端EIS應用時要用到JCA適配器
目前已經有許多集成商開發了JCA適配器
如表二所示
表二
JCA廠商與適配器
從表二可以看出
有許多廠商為同樣的EIS應用提供了JCA適配器
然而
即使對於同一個EIS應用
來自不同廠商的JCA適配器可能支持不同的功能集
這是由於兩個因素造成的
首先
一些規范
例如JCA
中的CCI
是可選的
是否在當前發行版中包含某個功能
完全由適配器廠商決定
其次
一些重要的EIS集成功能並未包含在當前的JCA規范中
為了增強適配器
適配器廠商可能決定增加一些額外的功能
這些在規范中沒有定義的功能將在稍後詳細討論
由於這些在JCA規范中沒有定義的功能可能是很重要的
許多廠商在這個問題上采取了更實在的策略
走到了規范之前
即使面臨著非標准化的風險
為了提供額外的功能
它們也會為適配器加上一些輔助特性
Insevo為許多EIS應用提供了JCA適配器
包括SAP
PeopleSoft
Edwards和Siebal
這些適配器除了支持JCA定義的CCI之外
還支持一種基於XML的接口
它們既支持客戶程序和EIS應用之間的同步通信
也支持異步通信
另外
它們還支持雙向通信
而不是JCA定義的單向通信
這些額外的功能使得Insevo的適配器不僅適用於應用集成
而且適用於過程集成(Process Integration)
另外
這些附加的功能已經被作為JCA
規范的一部分考慮
因此
從某種意義上來說
Insevo的適配器是一個超前JCA規范的版本
盡管額外增加的功能不遵從當前的JCA規范
但如果你確實需要它們
還有比這更好的事情嗎?
Resource Adapters的RAi連接器是另一組采取此種策略的JCA適配器
也包含了一些預期將在JCA
規范中定義的功能
RAi支持輸入(Inbound)連接和輸出(Outbound)連接
支持同步和異步通信模式
RAi連接器除了支持CCI之外
還支持一組基於XML的API和XML元數據
並提供了日志和監視工具
為實際工作帶來了巨大的方便
除此之外
Attunity和Insevo還提供了許多數據源適配器和傳統適配器
這些適配器往往只需單向的同步通信
一些數據源和傳統適配器不支持事務之類的JCA功能
因此
它們並不提供對JCA的完整支持
與其他類型的適配器比較
除了JCA適配器
還有其他一些根據不同需求而開發的適配器類型
其中之一是Web服務適配器
它是一種重要的新適配器類型
正在迅速地獲得人們的認可
另外
在JCA出現之前就有許多非標准的適配器被開發出來
因此這些適配器擁有更長的發展和成熟時間
Web服務適配器
當前
企業應用的平台有各種各樣的類型
當然有一部分是以Java為基礎的
在開發各類系統的過程中
企業投入了大量的資源
當然不肯輕言放棄
問題在於
如何才能在不增加額外投資的情況下
讓這些異種的系統能夠協作運行?兩種流行的技術使這一切成為可能
第一是HTTP
第二是XML
這兩者是每一種平台上都使用的技術
非常適合於異種平台的集成
Web服務規范就建立在這兩種簡單但關鍵的技術的基礎上
盡管詳細討論Web服務已經超出了本文的范圍
但從下面的簡要說明可以看出Web服務的主要特點
▲ XML接口
Web服務以XML為基礎
它利用Web服務描述語言(WSDL)描述終端服務者的服務形式
▲ HTTP/HTTPS協議
Web服務事實上的通信協議
▲ SOAP
基於WSDL的Web服務和HTTP/HTTPS通信協議之間的綁定協議
Web服務仍未提供任何QoS機制
因此是一種異步協議
對於異種系統的寬松結合來說
它是一種很合適的協議
Web服務和JCA提供的功能互相完善了對方
如果這兩種技術最終把它們的特點合並了起來
我們不應該感到奇怪
實際上
一些廠商已經向這個方向發展
例如
Attunity和Sirvisetti等廠商已經在它們的JCA適配器中提供了對Web服務的支持
非標准化的適配器
在JCA出現之前
一些中立的廠商
例如webMethods和TIBCO等
推出集成適配器已有數年
這些適配器一般具有非標准化的API
有時它們不能從集成軟件包分開
盡管如此
這些適配器已經經過多年實踐的檢驗
比JCA適配器涵蓋范圍更廣泛的EIS
特別地
webMethods Enterprise Adapter和B
B適配器擁有迄今為止最廣泛的覆蓋面
webMethods擁有的適配器多達
個以上
這些適配器還不支持JCA
但webMthods正在快速地向支持JCA的方向發展
JCA的優點和不足
JCA的優點很明顯
它為EIS廠商提供了一種按照開放的產業標准定義EIS接口的途徑
通過使用公共的可調用接口以及繼承JCA提供的QoS機制
程序員能夠在不犧牲性能和系統完整性的前提下
簡化EIS的集成工作
JCA的局限不是顯而易見
但不容忽視
和所有其他新技術一樣
JCA第一個版本的不成熟性往往成為最令人擔心的問題
另外
JCA適配器應該是可在應用服務器之間移植的
然而
就目前的情況來看
對於你正在使用的應用服務器來說這一判斷未必正確
因為適配器對某種應用服務器的支持情況由適配器廠商根據個案進行測試和發布
此外
JCA還有其他一些已知的局限
其中有些局限有望在JCA標准的下一個版本中得到解決
其中包括
▲ 異步消息傳輸
調用EIS應用時
JCA
采取同步消息傳輸方式
它不能處理來自EIS應用的異步消息或向EIS應用傳遞異步消息
如果要異步傳遞消息
就要在使用JCA時結合JMS(Java Message Service)或其他隊列服務
或者選擇使用JCA適配器中內建的非標准化異步消息支持
▲ 長時間運行的事務
這是一種運行時間可能達到數天甚至
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19460.html