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