http://www-128.ibm.com/developerworks/cn/webservices/ws-jcajms/
為企業(yè)集成定位其它接口技術(shù)
Regis Coqueret, 客戶經(jīng)理/解決方案 設(shè)計(jì)師, jStart Emerging Technologies,IBM Software Group
Marc Fiammante, 高級(jí)顧問 IT 設(shè) 計(jì)師, SWG EMEA Business Integration Technical Sales,IBM
2003 年 3 月
本文討論了在 J2C 連接器體系結(jié)構(gòu)(J2C Connector Architecture,JCA)、Java 消息服務(wù)(Java Message Service,JMS)和 Web 服務(wù)實(shí)現(xiàn)之間作出選擇的標(biāo)準(zhǔn)(選擇的依據(jù)是現(xiàn)有的環(huán)境、您想實(shí)現(xiàn)的模式和松耦合或緊耦合的預(yù)置要求)。
引言
組織在迅速地發(fā)展,他們?cè)噲D在控制成本的同時(shí)滿足變化的業(yè)務(wù)需求。這意味著企業(yè)需要以支持信息系統(tǒng)的簡(jiǎn)易重組的方式來組織他們自己的應(yīng)用程序。重要的組織變化(例如兼并或子公司的創(chuàng)建)也有可能把新的變數(shù)引入信息系統(tǒng)。
企業(yè)還可能需要到市場(chǎng)上購(gòu)買應(yīng)用程序或簽定他們的部分業(yè)務(wù)需求的轉(zhuǎn)包合同(例如分類帳或 back-office 管理)。無法保證現(xiàn)有的技術(shù)框架支持這些服務(wù)。
隨著信息系統(tǒng)變得越來越復(fù)雜,開發(fā)必須被簡(jiǎn)化。這使人們對(duì) 企業(yè)應(yīng)用程序集成(Enterprise Application Integration,EAI)產(chǎn)生了興趣。企業(yè)仍然必須用業(yè)務(wù)服務(wù)和訪問新的集成應(yīng)用程序的靈活方式來補(bǔ)充 EAI。
目前,基于接口的體系結(jié)構(gòu)考慮了這種對(duì)業(yè)務(wù)服務(wù)的靈活訪問和客戶機(jī)獨(dú)立性的不斷增長(zhǎng)的需求?;诮涌诘捏w系結(jié)構(gòu)包括 Web 服務(wù)、 J2C 連接器體系結(jié)構(gòu)(J2C Connector Architecture,JCA;請(qǐng)參閱 參考資料以了解更多信息)和 Java 消息服務(wù)(Java Message Service,JMS)等技術(shù)。它們還包括分離客戶機(jī)代碼和業(yè)務(wù)服務(wù)的實(shí)現(xiàn)的命令模式的所有變種。這些調(diào)用框架與 EAI 中間件之間可以相互調(diào)用。
在本文中,我們先討論每個(gè)接口技術(shù)的主要特點(diǎn),然后講述促使您選擇技術(shù)的要求。讀完本文后,您將理解如何定位各種技術(shù)以及如何為某個(gè)實(shí)現(xiàn)選擇其中的一種技術(shù)。
Web 服務(wù)、JCA 和 JMS 的特點(diǎn)
這一部分列出有關(guān)的接口技術(shù)并詳細(xì)介紹它們的一些特點(diǎn)。
Web 服務(wù)
Web 服務(wù)是面向服務(wù)的體系結(jié)構(gòu)(Services Oriented Architecture,SOA)的實(shí)現(xiàn)。SOA 有松耦合的三方:提供者、代理和請(qǐng)求者。提供者提供的業(yè)務(wù)服務(wù)表示請(qǐng)求者無法直接看到的某個(gè)實(shí)現(xiàn)。請(qǐng)求者從代理那里了解它必須從提供者那里收發(fā)的信息結(jié)構(gòu)以及訪問該服務(wù)所用的協(xié)議。請(qǐng)求者一點(diǎn)也不了解提供者實(shí)現(xiàn)業(yè)務(wù)服務(wù)的方式。
Web 服務(wù)被定義為請(qǐng)求者與提供者之間的必需的業(yè)務(wù)接口而不是所有業(yè)務(wù)請(qǐng)求的共同管道。有些變數(shù)反映了 Web 服務(wù)的特點(diǎn),包括:
- 它們可以是緊耦合的,它們的部署可以基于調(diào)用框架的使用。
- 它們以同步的請(qǐng)求/應(yīng)答方式或異步方式來執(zhí)行。
- 它們可由 J2EE 或非 J2EE 的提供程序來公開。
- 它們可能提供事務(wù)和安全性的支持(也可能不提供這種支持)。
JCA
Java 連接器體系結(jié)構(gòu)主要處理的是以緊耦合的方式訪問 企業(yè)信息系統(tǒng)(Enterprise Information System,EIS)的業(yè)務(wù)邏輯的需求。連接器體系結(jié)構(gòu)提供了資源適配的支持,資源適配把 J2EE 安全性、事務(wù)和通信共享映射到相應(yīng)的 EIS 技術(shù)。
起初,人們的意圖是讓連接器以同步的請(qǐng)求/應(yīng)答方式來訪問大型機(jī)上的舊的事務(wù)服務(wù)器,這也是當(dāng)前多數(shù)連接器的工作方式。目前,標(biāo)準(zhǔn)的發(fā)展方向是更異步的雙向連接性。
連接器的某些用戶定義的變種更成熟,它們運(yùn)行在邏輯連接方式下。同樣,它們可被用作調(diào)用框架,以類似于 Web 服務(wù)的方式來選擇適當(dāng)?shù)奈锢?EIS 目標(biāo)和業(yè)務(wù)操作。
JMS
JMS 是異步的、基于消息的接口。您還可以使用 JMS 來訪問分布于不同種類的系統(tǒng)中的業(yè)務(wù)邏輯。基于消息的接口支持以下功能:
點(diǎn)到點(diǎn)和發(fā)布/預(yù)訂機(jī)制?;谙⒌目蚣芸砂研畔鹘o其它應(yīng)用程序而這些程序不必顯式地請(qǐng)求它。相同的信息可被并行地傳遞給許多訂戶。
節(jié)奏的獨(dú)立性。JMS 框架以異步方式運(yùn)行,但也提供模擬同步的請(qǐng)求/響應(yīng)方式的功能。這使源系統(tǒng)和目標(biāo)系統(tǒng)能夠同時(shí)運(yùn)行而不必等待對(duì)方。
有保證的信息傳遞。JMS 框架可在事務(wù)方式下管理消息并確保消息的傳遞(但不確保傳遞的及時(shí)性)。
不同種類的框架之間的互操作性。源應(yīng)用程序和目標(biāo)應(yīng)用程序可在不同種類的環(huán)境中運(yùn)行而不必處理有關(guān)它們相應(yīng)的框架的通信和執(zhí)行問題。
使交換更流暢。改用消息方式后,信息交換的細(xì)粒度變細(xì)。
選擇接口技術(shù)
您過去在系統(tǒng)中實(shí)現(xiàn)業(yè)務(wù)邏輯的方式將使您自然地面對(duì)這些技術(shù)中的一種技術(shù)。作出選擇的第一步是分析您現(xiàn)有的基礎(chǔ)結(jié)構(gòu)。有現(xiàn)有的消息傳遞系統(tǒng)或舊系統(tǒng)(例如 CICS 或 IMS)嗎?
在許多情況下,訪問大型機(jī) EIS(例如 CICS 或 IMS)的最自然的方式是通過 Java 連接器體系結(jié)構(gòu)。另一方面,如果您需要訪問 .NET 應(yīng)用程序,那么您很可能傾向于 Web 服務(wù)接口。在其它情況下,您可能使用 JMS 接口,該接口允許消息的交換而且對(duì)實(shí)現(xiàn)語言的約束很小。
請(qǐng)使用以下的決定要點(diǎn)的摘要:
您有現(xiàn)有的 Java 應(yīng)用程序或在規(guī)劃新的 Java 應(yīng)用程序:使用 JMS 或 JCA。
您需要與伙伴交互:把 Web 服務(wù)用于傳輸和連接。
您需要跨越語言之間的障礙:使用 JMS 或 Web 服務(wù)。
在作出決定時(shí),另一個(gè)要考慮的因素是網(wǎng)絡(luò)的范圍:是因特網(wǎng)、內(nèi)部網(wǎng)或外部網(wǎng)中的哪個(gè)?該范圍決定了您在選擇傳輸協(xié)議時(shí)的靈活性。因特網(wǎng)上的部署很可能需要通過 HTTP 的松耦合的 Web 服務(wù)。這將與現(xiàn)有的防火墻和 非軍事區(qū)(demilitarized zone,DMZ)基礎(chǔ)結(jié)構(gòu)相配套,您可以最大限度地降低成本。JMS 和 JCA 更適合作為內(nèi)部網(wǎng)或外部網(wǎng)協(xié)議。JMS 適合用于異步方式或模擬的同步方式,JCA 適合用于更緊的耦合。
選擇的共同點(diǎn)
Web 服務(wù)不是通過 SOAP 提供的服務(wù)的同義詞。您可以把任何帶有它的功能的 Web 服務(wù)描述語言(Web services Description Language,WSDL)描述的代碼和訪問協(xié)議看作 Web 服務(wù)。您可以通過多個(gè)傳輸和協(xié)議來提供任何這種服務(wù)。
因此,您可以采用以 WSDL 為中心的方式,這一方式由 Web 服務(wù)調(diào)用框架(Web services Invocation Framework,WSIF)來描述和實(shí)現(xiàn)。無論網(wǎng)絡(luò)的范圍(內(nèi)部網(wǎng)、外部網(wǎng)或因特網(wǎng)),這把您為集成作出的選擇聯(lián)系在一起。
您很可能試圖把更多的選擇留到未來的擴(kuò)展規(guī)劃中,包括現(xiàn)有企業(yè)系統(tǒng)的擴(kuò)展或連接到業(yè)務(wù)伙伴。為了簡(jiǎn)化這種做法,您可以在一個(gè) WSDL 文檔中描述相同的業(yè)務(wù)組件,您可以:
- 通過 入站綁定(inbound binding)概念,在不同的協(xié)議(例如 SOAP 和 RMI-IIOP)中提供。RMI 是 Java 遠(yuǎn)程消息調(diào)用。因特網(wǎng) ORB 間協(xié)議(Internet Inter-ORB protocol,IIOP)是 CORBA 有線協(xié)議。
- 通過 出站綁定(outbound binding)概念,用不同類型的組件(例如 JCA 或基于 JMS 的組件)來實(shí)現(xiàn)。
如果使用這種方式,那么 JMS 和 JCA 只是服務(wù)器提供程序可能用來實(shí)現(xiàn)業(yè)務(wù)組件的幾個(gè)協(xié)議。因此,不同網(wǎng)絡(luò)和接口技術(shù)只影響非功能性的部分,例如安全性、性能、響應(yīng)時(shí)間和可用性。當(dāng)內(nèi)部網(wǎng)和因特網(wǎng)上的相同組件可被使用時(shí),兩個(gè)網(wǎng)絡(luò)的區(qū)別是所需的安全性、預(yù)期的性能和要求的可用性。
Web 服務(wù)的以 WSDL 為中心的方式使您能夠把抽象的接口從確切的協(xié)議棧中分離出來。您可以用兩種方法來實(shí)現(xiàn)這種方式(兩種方法都利用 WSIF):
- 通過使用 IBM Web Services Gateway(WSGW),現(xiàn)有的 WSDL 描述被部署并在 SOAP 通道中使用 WSDL 描述。入站綁定是 SOAP,出站綁定是現(xiàn)有的 WSDL 實(shí)現(xiàn)描述。
- 通過使用 IBM WebSphere Studio Application Developer Integration Edition(WSAD-IE),現(xiàn)有的 WSDL 描述被消耗并通過 SOAP 或 RMI-IIOP 代理來使用 WSDL 描述。
交互模式
在設(shè)計(jì)應(yīng)用程序時(shí),您需要定義交互的模式。一般來說,這些模式揭示了您對(duì)技術(shù)集成的偏愛。
事件驅(qū)動(dòng)的推模型
等待事件的偵聽器提供了標(biāo)準(zhǔn)的事件推模型,該模型對(duì)于 EAI 特別重要。業(yè)務(wù)流程的自動(dòng)化常常需要捕獲應(yīng)用程序事件以便傳播到其它的集成應(yīng)用程序。
標(biāo)準(zhǔn)的業(yè)務(wù)服務(wù)的偵聽器常常使用 JMS 或 HTTP 服務(wù)器。EJB 中的消息驅(qū)動(dòng) Bean 使用 JMS,而 Web 服務(wù)使用 HTTP。
在這個(gè)推模型中,被推的事件觸發(fā)流程。Web 服務(wù)社區(qū)已為正式定義這種流程交互的先后順序做了大量的工作。具體地說, Web 服務(wù)流程語言(Web services Flow Language,WSFL)和 Web 服務(wù)的業(yè)務(wù)流程執(zhí)行語言(Business Process Execution Language for Web services,BPEL4WS)標(biāo)準(zhǔn)可處理這種事件排序。
- 在 WSFL 中,作為對(duì)進(jìn)入消息的響應(yīng),流程引擎可以執(zhí)行新的流程實(shí)例(以 spawn生命周期操作為標(biāo)志)。它對(duì)單向交互的支持提供了對(duì)通知的支持。
- 在 BPEL4WS 中,作為對(duì)進(jìn)入消息的響應(yīng), receive或 pick活動(dòng)可隱式地啟動(dòng)業(yè)務(wù)流程; pick活動(dòng)可根據(jù)一組事件中的一件來選擇運(yùn)行的流程。
同步的請(qǐng)求/應(yīng)答方式
在企業(yè)中,性能要求可能促使您選擇 JCA 實(shí)現(xiàn),特別是在目前多數(shù)業(yè)務(wù)邏輯在某個(gè)現(xiàn)有的 EIS 中的時(shí)候,更是這樣。然而,并沒有訪問所有系統(tǒng)的連接器,在有些情況下,用 JMS 來添加消息層是唯一的解決方案。
消息傳遞不是請(qǐng)求/響應(yīng)類型交互的主要選擇。由于消息傳遞所帶來的隔離,用消息傳遞中間件實(shí)現(xiàn)的請(qǐng)求/響應(yīng)阻礙了調(diào)用者與被調(diào)者之間的事務(wù)協(xié)調(diào)。另外,調(diào)用者的編程邏輯(而不是提供的連接器實(shí)現(xiàn))必須管理響應(yīng)超時(shí)。
異步模型
所有三個(gè)接口技術(shù)(Web 服務(wù)、JMS 甚至 JCA)都可在異步方式下工作。請(qǐng)求或事件被發(fā)送至目標(biāo)而所期待的回答只不過是“消息被正確地傳遞”。它是“發(fā)送并忘記(fire-and-forget)”式的交互。
在體系結(jié)構(gòu)中支持這個(gè)模型不是主要問題,您所用的技術(shù)與其它模型中的技術(shù)類似。您常常把異步模型與事件推支持或輪詢機(jī)制配對(duì),這些細(xì)節(jié)很可能促使您為實(shí)現(xiàn)選擇某種技術(shù)。
在 Web 服務(wù)的情況下,雖然一般來說工具不適合異步交互,但是這種形式被支持。基于 SOAP 的 Web 服務(wù)不僅支持同步 RPC 交互方式,還支持異步消息交互方式。它的基礎(chǔ)是面向文檔模型,在這個(gè)模型中,請(qǐng)求者和供應(yīng)者必須處理 SOAP 信封格式化和分析。
面向文檔模型是實(shí)現(xiàn)真正的單向通信的方法。
技術(shù)選擇的要求和含義
下一部分討論在選擇業(yè)務(wù)邏輯的訪問技術(shù)中作為決定因素的非功能性要求。
松耦合或緊耦合
緊耦合意味著存在不易改變的、被迫準(zhǔn)確表達(dá)的、預(yù)先確定的客戶機(jī)-服務(wù)器或消費(fèi)者-發(fā)布者關(guān)系。在這種情況下,對(duì)于給定的客戶機(jī),您一般只有一個(gè)特定的服務(wù)器,該服務(wù)器有故障敏感(這意味著客戶機(jī)必須處理有關(guān)協(xié)議的錯(cuò)誤)的技術(shù)交互。您可以在接口定義級(jí)別或協(xié)議棧級(jí)別上查看這種緊耦合。為了訪問該服務(wù),您可能依賴于服務(wù)的特定的抽象定義或特定的協(xié)議棧。
松耦合系統(tǒng)常被設(shè)計(jì)成解決跨越數(shù)據(jù)流邊界的問題,工作程序只解決更大的問題的一個(gè)部分,而且不一定知道這個(gè)問題的上下文。您常常可以通過添加更多的工作程序來自然地?cái)U(kuò)展這些系統(tǒng)。
您可以按以下方式來松耦合:
- 通過提供描述消費(fèi)者/客戶機(jī)與生產(chǎn)者/服務(wù)器之間的關(guān)系的公共合同,您可以放心地構(gòu)建和集成您的應(yīng)用程序而不必讓別人了解您的應(yīng)用程序的技術(shù)細(xì)節(jié)(以及隨著時(shí)間的流逝而發(fā)生的變化)。通過相同的標(biāo)記,您可以使用別的開發(fā)者的公共合同來使用他們的應(yīng)用程序而不必了解細(xì)節(jié)。
- 通過提供處理與匿名服務(wù)器無連接交互的協(xié)議棧,您可以放心地通過故障彈性機(jī)制與組件交互。
- 通過提供與負(fù)載無關(guān)的通信通道,特別是通過基于代理的消息傳遞系統(tǒng)。
現(xiàn)在,我們把所討論的三種技術(shù)映射到松耦合或緊耦合。
JCA 是緊耦合技術(shù)。
- JCA 是使用容器來連接請(qǐng)求和連接的企業(yè)信息系統(tǒng)的 J2EE 標(biāo)準(zhǔn)。容器是一個(gè)耦合器,為安全性、事務(wù)作用域、連接管理傳播以及與目標(biāo)系統(tǒng)的交互提供受管方式支持。
- JCA 耦合接口由公共客戶機(jī)接口來嚴(yán)格定義。
- 應(yīng)用程序組件看不到系統(tǒng)合同和容器-組件合同,但這些合同確實(shí)有力地鏈接了調(diào)用者和被調(diào)者。
- JCA 尚未處理類似計(jì)費(fèi)和審計(jì)的業(yè)務(wù)問題。實(shí)現(xiàn)這些要求仍是應(yīng)用程序業(yè)務(wù)體系結(jié)構(gòu)的問題。
JMS 是松耦合技術(shù)。例如,它(只給消息中間件)不給目標(biāo)系統(tǒng)提供安全性或事務(wù)綁定。一般來說,消息傳遞實(shí)現(xiàn)松耦合的原因有:
- 消息制造者和消費(fèi)者在點(diǎn)到點(diǎn)或發(fā)布/預(yù)訂模型中通過消息傳遞傳輸(例如消息代理)來交互。
- 提供的技術(shù)頭常常獨(dú)立于業(yè)務(wù)負(fù)載。
JMS 很適合于:
- 集成參與業(yè)務(wù)事件的系統(tǒng)/組件。
- 集成遲緩的響應(yīng)者。
- 集成現(xiàn)有的系統(tǒng)。
Web 服務(wù)的目標(biāo)是業(yè)務(wù)服務(wù)而不是技術(shù)連接性。它們主要用松技術(shù)耦合但接口定義級(jí)別上的緊耦合來實(shí)現(xiàn)。
在 Web 服務(wù)中,耦合基于接口定義和協(xié)議綁定。
- 合同用 WSDL 來發(fā)布,WSDL 定義了接口,接口定義了可用的操作。
- 用于訪問 Web 服務(wù)的協(xié)議多種多樣。這個(gè)協(xié)議被稱為入站綁定,它定義了如何獲取實(shí)現(xiàn)助診文件。
- 訪問實(shí)現(xiàn)的方法也多種多樣。這個(gè)協(xié)議被稱為出站綁定,它定義了實(shí)現(xiàn)公共合同的助診文件。示例包括 JavaBeans、EJB 和 JCA。
Web 服務(wù)中的耦合方式提供了靈活性,有兩種綁定:靜態(tài)和動(dòng)態(tài)。
- 靜態(tài)綁定意味著緊耦合:請(qǐng)求者使用在設(shè)計(jì)時(shí)獲取的服務(wù)實(shí)現(xiàn);不必使用私有的或共享的注冊(cè)中心。
- 動(dòng)態(tài)綁定意味著松耦合:請(qǐng)求者在運(yùn)行時(shí)發(fā)現(xiàn)用于被調(diào)用的服務(wù)的實(shí)現(xiàn);它甚至可能在運(yùn)行時(shí)確定應(yīng)該被調(diào)用的接口。
在現(xiàn)實(shí)中,目前多數(shù) Web 服務(wù)把 SOAP 用作入站協(xié)議。SOAP 是松耦合協(xié)議,直至 服務(wù)等級(jí)被支持。服務(wù)等級(jí)將處理安全性、可靠性和可用性。
由于 SOAP 無處不在、防火墻友好和其它優(yōu)點(diǎn),SOAP 仍是缺省協(xié)議。另外,SOAP 是目前開發(fā) Web 服務(wù)安全性規(guī)范的地方;所以在實(shí)踐中,定義標(biāo)準(zhǔn)的安全性方式意味著使用 SOAP。
現(xiàn)在,在 Web 服務(wù)中,一些其它輔助業(yè)務(wù)功能(例如計(jì)費(fèi)和審計(jì))已經(jīng)可用。
可移植性和互操作性
Web 服務(wù)不在調(diào)用者與被調(diào)者之間強(qiáng)加編程語言或操作系統(tǒng)限制。在不久的將來,很有可能處理 SOAP 的某些互操作性問題,例如 Apache 實(shí)現(xiàn)與其它實(shí)現(xiàn)之間的差異。在解決它之后,所有支持 Web 服務(wù)的平臺(tái)將可以互操作(包括 .NET 和 J2EE 平臺(tái))。但是即使到那時(shí),Web 服務(wù)客戶機(jī)或服務(wù)器實(shí)現(xiàn)代碼也不能在供應(yīng)商之間移植。為 .NET 編寫的實(shí)現(xiàn)代碼肯定不能運(yùn)行于 J2EE。
JMS 和 JCA 只處理 Java 世界。有了 JCA,就可以在 Java 客戶機(jī)代碼端上實(shí)現(xiàn)可移植性,而且互操作性限于特定的目標(biāo)。為了在技術(shù)級(jí)別上互操作,JMS 要求在兩端都有 Java 環(huán)境,但是消息負(fù)載是無關(guān)的,通過使用 JAXM Web 服務(wù),可在 JMS 上攜帶 SOAP 負(fù)載。
事務(wù)支持
JCA 并不總是支持 EIS 的端到端事務(wù)支持。前面已提到,連接器提供程序?qū)崿F(xiàn)了把事務(wù)上下文傳播到目標(biāo)系統(tǒng)的容器。這是通過事務(wù)管理系統(tǒng)合同來完成的,在合同中,容器被用作控制作為資源管理器的 EIS 的事務(wù)管理器。這是基于 XA標(biāo)準(zhǔn)(請(qǐng)參閱 參考資料以了解更多信息)。
Web 服務(wù)目前不支持事務(wù)。標(biāo)準(zhǔn)委員會(huì)正在研究用 WS-Coordination 和 WS-transaction 標(biāo)準(zhǔn)來提供松耦合模型中的事務(wù)支持的方法。今后將出現(xiàn)使用補(bǔ)償?shù)乃神詈夏P秃褪褂妙愃?XA 事務(wù)模型的緊耦合模型。
在消息傳遞模型中,消息被傳遞到隊(duì)列后,客戶機(jī)無法控制它的傳播。所以 JMS 只支持隊(duì)列入口點(diǎn)的事務(wù),不支持目標(biāo)應(yīng)用程序的事務(wù)。
可靠性
目前,唯一有保證的傳遞是通過 JMS(盡管沒有消息延遲的保證)。為了今后的需要,IBM、Microsoft、BEA 和 TIBCO 已聯(lián)合提出了在 Web 服務(wù)環(huán)境中交換安全的、可靠的消息的標(biāo)準(zhǔn)機(jī)制。您可在 Web 服務(wù)組織站點(diǎn)獲取這些標(biāo)準(zhǔn)(請(qǐng)參閱 參考資料)。JCA 連接的可靠性總是特定于連接器,JCA 本身并不意味著可靠性。
安全性
安全性是標(biāo)準(zhǔn)化程度最低的領(lǐng)域。在 JMS 中,規(guī)范明確規(guī)定安全性由 JMS 提供程序?qū)崿F(xiàn)(該實(shí)現(xiàn)與其它的 J2EE 安全性兼容)來決定。幸運(yùn)的是,IBM 也堅(jiān)持這一標(biāo)準(zhǔn)。在 JCA 中,安全性的支持取決于連接器容器的功能和目標(biāo)企業(yè)信息系統(tǒng)的實(shí)現(xiàn)。
HTTPS 支持在傳輸層上提供某種 Web 服務(wù)安全性。但是,在 Web 服務(wù)器譯碼和認(rèn)證請(qǐng)求后,它是易受攻擊的,只有使用 SOAP 安全性擴(kuò)展(SOAP Security Extensions,SOAP-SEC)的某些 Web 服務(wù)實(shí)現(xiàn)支持目前可用的安全性(請(qǐng)參閱 參考資料以了解更多有關(guān) SOAP-SEC 的信息)。有關(guān) WS-Security 標(biāo)準(zhǔn)的標(biāo)準(zhǔn)化工作正在進(jìn)行,WS-Security 將在未來實(shí)現(xiàn)完全互操作的端到端安全性模型。
結(jié)束語
您可以看到,需要根據(jù)多個(gè)標(biāo)準(zhǔn)來為集成選擇 Web 服務(wù)、JMS 和 JCA 實(shí)現(xiàn)中的一個(gè)實(shí)現(xiàn)。通過映射到某些解決方案的要求并對(duì)這些要求劃分優(yōu)先級(jí),設(shè)計(jì)者可為他們特殊的情況選擇正確的實(shí)現(xiàn)。
下面的表總結(jié)了我們已討論過的內(nèi)容并列出了決定的標(biāo)準(zhǔn):
|
Web 服務(wù) |
JMS |
JCA |
注釋 |
接口耦合(抽象服務(wù)定義) |
是 支持動(dòng)態(tài)接口發(fā)現(xiàn)和請(qǐng)求構(gòu)造 |
否 負(fù)載無關(guān) |
是 |
“是”意味著緊耦合 |
技術(shù)耦合(協(xié)議棧) |
否 在 WSIF 中,客戶機(jī)未與某個(gè)協(xié)議實(shí)現(xiàn)的客戶機(jī)庫(kù)綁定 |
是 |
是 |
“是”意味著緊耦合 |
可移植性 |
是 多種語言 |
否 僅 Java 技術(shù) |
否 僅 Java 技術(shù) |
|
可靠性 |
SOAP 的 HTTP-R 綁定 |
是 |
特定 |
|
事務(wù)支持 |
未來 WS-Coordination 和 WS-Transaction 補(bǔ)償和 XA 模型 |
作用域有限 僅在隊(duì)列入口點(diǎn) |
是 XA 模型 |
|
安全性 |
限于 SOAP SOAP-SEC(被 WS-Security 取代) |
不是標(biāo)準(zhǔn)的一部分,所以特定于供應(yīng)商 |
EIS 與 J2EE 之間的集成 |
|
同步方式 |
是 大量使用 |
自己動(dòng)手 |
是 |
|
異步方式 |
是 面向文檔接口 |
是 |
未來 |
|
事件驅(qū)動(dòng)、推方式 |
是 面向文檔接口或流程支持(WSFL,BPEL4WS) |
是 |
未來 |
|
參考資料
作者簡(jiǎn)介 Régis Coqueret 是 IBM jStart(jump-Start)Emerging Technologies Team 的成員,他與客戶和業(yè)務(wù)伙伴一起在真實(shí)的業(yè)務(wù)解決方案中采用 Web 服務(wù)和其它新興技術(shù)。此前,他是 EMEA WebSphere Technical Sales Support Team 的創(chuàng)始成員,后來成為 IBM Software Services for WebSphere 的解決方案設(shè)計(jì)師。他于 1998 年開始參與 WebSphere 工作,在這之前,他是 IBM SWG Paris Laboratory 的軟件設(shè)計(jì)師,他的重點(diǎn)是應(yīng)用程序開發(fā)方面的軟件和產(chǎn)品開發(fā)。在 IT 業(yè),他有 13 年的背景,他是 Ecole des Mines de Paris(一流的法國(guó)工程學(xué)校)的工程師,他從 Institut Superieur d'Informatique et d'Automatique 獲得了計(jì)算機(jī)科學(xué)和自動(dòng)化的研究生學(xué)位。您可以通過 regis.coqueret@fr.ibm.com與 Régis 聯(lián)系。 |
Marc Fiammante 有 Ecole Centrale de Paris 的工程學(xué)位,他是 IBM EMEA 的認(rèn)證高級(jí)顧問 IT 設(shè)計(jì)師,他在多種環(huán)境中的大型項(xiàng)目體系結(jié)構(gòu)和軟件開發(fā)方面有許多經(jīng)驗(yàn)。在 IT 業(yè),他有 19 年的背景,他已提交了 5 個(gè)有關(guān)軟件領(lǐng)域的專利。他在主要的銀行和政府項(xiàng)目中領(lǐng)導(dǎo)著體系結(jié)構(gòu)小組。他的技術(shù)專長(zhǎng)是電子商務(wù)、企業(yè)應(yīng)用程序集成(Enterprise Application Integration,EAI)和面向?qū)ο蠹夹g(shù),包括許多軟件中間件、編程語言和標(biāo)準(zhǔn),例如 J2EE、Enterprise JavaBeans、Java、C、C++、WebSphere、WebSphere 業(yè)務(wù)集成、DB2 和 Tivoli。您可以通過 marc.fiammante@fr.ibm.com與他聯(lián)系。
|