《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 業(yè)界動(dòng)態(tài) > 基于EJB的數(shù)據(jù)互操作技術(shù)研究

基于EJB的數(shù)據(jù)互操作技術(shù)研究

2008-12-20
作者:劉東波,李由
1引言
??? 網(wǎng)絡(luò)技術(shù)的發(fā)展使人類社會(huì)進(jìn)入“信息爆炸”的時(shí)代,而人們卻常常被淹沒在浩瀚的數(shù)據(jù)海洋之中,難以有效地檢索、訪問和使用數(shù)據(jù)。由于受到當(dāng)時(shí)計(jì)算機(jī)技術(shù)和應(yīng)用水平的制約,早期的信息系統(tǒng)都是根據(jù)行業(yè)或部門的特殊需求而建立的,沒有充分考慮與其它相關(guān)信息系統(tǒng)的數(shù)據(jù)共享" title="數(shù)據(jù)共享">數(shù)據(jù)共享問題,所以形成了所謂的“數(shù)據(jù)煙囪”或“數(shù)據(jù)孤島”,這已經(jīng)成為制約信息系統(tǒng)進(jìn)一步發(fā)展的“瓶頸”之一。
??? 到了二十一世紀(jì),異構(gòu)" title="異構(gòu)">異構(gòu)數(shù)據(jù)環(huán)境帶來的互操作" title="互操作">互操作問題變的越來越突出。即便是針對(duì)同一領(lǐng)域的應(yīng)用問題,并且采用相同的技術(shù)體制,也無法保證所有應(yīng)用系統(tǒng)" title="應(yīng)用系統(tǒng)">應(yīng)用系統(tǒng)都有相同的數(shù)據(jù)模式。為了在這些系統(tǒng)之間交換數(shù)據(jù),必須將信源模式中的數(shù)據(jù)轉(zhuǎn)換為信宿模式的格式。
??? 本文所說的異構(gòu)數(shù)據(jù)環(huán)境是指網(wǎng)上相互獨(dú)立且需要進(jìn)行數(shù)據(jù)交換的各種不同數(shù)據(jù)庫(kù)系統(tǒng)構(gòu)成的集合,其中的每個(gè)數(shù)據(jù)庫(kù)系統(tǒng)都具有自治性。這里包含兩層意思:
??? (1)數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)的異構(gòu)性,即分別采用不同供應(yīng)商的DBMS產(chǎn)品;
??? (2)數(shù)據(jù)模型(Data Model)的異構(gòu)性,即采用的數(shù)據(jù)庫(kù)邏輯模型或物理模型不同,或者對(duì)數(shù)據(jù)元素的語(yǔ)法描述不同,或者同一語(yǔ)法描述在不同的數(shù)據(jù)庫(kù)系統(tǒng)中有不同的語(yǔ)義解釋。
??? 要解決DBMS的異構(gòu)性,可以采用DBMS網(wǎng)關(guān)技術(shù),它主要解決不同DBMS之間的語(yǔ)法轉(zhuǎn)換問題,目前已經(jīng)有許多成熟的商用軟件可以選擇,如Sybase提供的OmniSQL網(wǎng)關(guān)。要解決數(shù)據(jù)模型的異構(gòu)性,不僅涉及到語(yǔ)法轉(zhuǎn)換(Transform),還涉及到語(yǔ)義仲裁(Mediation)問題,這是異構(gòu)數(shù)據(jù)集成的關(guān)鍵。
??? 早期的方法是為每一對(duì)交換數(shù)據(jù)的系統(tǒng)寫一個(gè)特殊的接口程序。歷史的經(jīng)驗(yàn)告訴我們,開發(fā)和維護(hù)這些接口程序的時(shí)間和經(jīng)費(fèi)開銷都很大。而且,隨著需要交換數(shù)據(jù)的系統(tǒng)不斷增加,為此而付出的代價(jià)也將不斷增大。
??? 如何實(shí)現(xiàn)分布式數(shù)據(jù)的交換與共享是人們普遍關(guān)注的研究領(lǐng)域。因?yàn)槟壳按罅康臄?shù)據(jù)是通過分布式、異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行管理的,所以要實(shí)現(xiàn)數(shù)據(jù)共享與透明訪問,就必須集成各種異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng),并最終達(dá)到數(shù)據(jù)互操作的目的。
??? 本文回顧數(shù)據(jù)共享技術(shù)的發(fā)展歷程,討論數(shù)據(jù)標(biāo)準(zhǔn)化對(duì)數(shù)據(jù)互操作的作用及其局限性,在此基礎(chǔ)上,提出一種基于EJB的異構(gòu)數(shù)據(jù)互操作解決方案,最后介紹其中的部分實(shí)現(xiàn)問題。
2 數(shù)據(jù)共享技術(shù)發(fā)展
??? 從數(shù)據(jù)共享的角度來看,信息系統(tǒng)的發(fā)展大致經(jīng)歷了的四個(gè)階段:數(shù)據(jù)與應(yīng)用捆綁階段、數(shù)據(jù)與應(yīng)用相對(duì)獨(dú)立階段、基于標(biāo)準(zhǔn)的數(shù)據(jù)集成階段、異構(gòu)數(shù)據(jù)互操作階段。
2.1 應(yīng)用與數(shù)據(jù)捆綁
??? 早期的應(yīng)用程序都有自己的數(shù)據(jù),而且應(yīng)用程序很少訪問其它部門或系統(tǒng)的數(shù)據(jù),數(shù)據(jù)與程序緊緊捆綁在一起,數(shù)據(jù)的定義、格式以及操作規(guī)則都完全由使用它們的應(yīng)用程序來解釋,共享數(shù)據(jù)幾乎是不可能的。
??? 客觀地說,直到20世紀(jì)90年代,各企業(yè)、各部門在建立應(yīng)用系統(tǒng)時(shí),往往的只考慮自己對(duì)數(shù)據(jù)的需求,而很少關(guān)心是否能夠滿足其它機(jī)構(gòu)的需求。系統(tǒng)間進(jìn)行數(shù)據(jù)交換時(shí),需要很多專用的、點(diǎn)對(duì)點(diǎn)的接口程序,而且多數(shù)是通過格式化消息或文件傳遞來實(shí)現(xiàn)的。
2.2 數(shù)據(jù)與應(yīng)用相對(duì)獨(dú)立
??? 隨著計(jì)算機(jī)應(yīng)用范圍的不斷擴(kuò)大,系統(tǒng)之間的互操作和數(shù)據(jù)共享需求日益迫切。隨著數(shù)據(jù)庫(kù)管理系統(tǒng)的不斷成熟,應(yīng)用系統(tǒng)的程序和數(shù)據(jù)已經(jīng)分離。應(yīng)用系統(tǒng)不僅能夠訪問自己的數(shù)據(jù),還能夠通過查詢和操縱其它系統(tǒng)的數(shù)據(jù),但是,不同的數(shù)據(jù)庫(kù)/數(shù)據(jù)文件之間仍是彼此孤立的“數(shù)據(jù)孤島”,無法形成統(tǒng)一的數(shù)據(jù)視圖。
2.3 基于標(biāo)準(zhǔn)的數(shù)據(jù)集成
??? 為了給所有用戶提供訪問共享數(shù)據(jù)的統(tǒng)一邏輯視圖,人們從20世紀(jì)90年代開始大力推進(jìn)數(shù)據(jù)標(biāo)準(zhǔn)化工作,并取得了明顯成效。
??? 通過制訂企業(yè)標(biāo)準(zhǔn)數(shù)據(jù)模型以及標(biāo)準(zhǔn)數(shù)據(jù)交換格式,可以將分散在不同宿主機(jī)上的數(shù)據(jù)庫(kù)集成為一個(gè)物理上分布、邏輯上統(tǒng)一的數(shù)據(jù)庫(kù)系統(tǒng),應(yīng)用系統(tǒng)可以通過統(tǒng)一的數(shù)據(jù)訪問服務(wù)透明地查詢和更新分布式數(shù)據(jù)庫(kù)中的數(shù)據(jù),而分布式數(shù)據(jù)庫(kù)管理系統(tǒng)本身具有維護(hù)全局?jǐn)?shù)據(jù)一致性的功能。
??? 數(shù)據(jù)標(biāo)準(zhǔn)化工作大大提高了信息系統(tǒng)之間的數(shù)據(jù)共享與互操作能力。但是,數(shù)據(jù)標(biāo)準(zhǔn)化不是萬能的,它不能一勞永逸地解決數(shù)據(jù)共享問題。
2.4 異構(gòu)數(shù)據(jù)互操作
??? 由于各部門都掌握并維護(hù)著與自己的業(yè)務(wù)相關(guān)的數(shù)據(jù),其中有一部分是專用數(shù)據(jù),還有很多數(shù)據(jù)是需要并且可以與其它部門共享的,所以必須建立相應(yīng)的軟件基礎(chǔ)設(shè)施,以滿足各種可能的數(shù)據(jù)共享需求。
??? (1)為了制定正確的生產(chǎn)計(jì)劃,往往需要銷售部門和財(cái)務(wù)部門及時(shí)提供客戶訂單和財(cái)務(wù)方面的數(shù)據(jù)。
??? (2)為了應(yīng)對(duì)市場(chǎng)的變化,往往需要臨時(shí)改變營(yíng)銷計(jì)劃和增減業(yè)務(wù)部門,這里存在大量現(xiàn)有系統(tǒng)無法預(yù)見的新關(guān)系,以及新增業(yè)務(wù)部門對(duì)信息共享的需求。
??? (3)當(dāng)企業(yè)經(jīng)營(yíng)模式發(fā)生改變時(shí),可能會(huì)導(dǎo)致應(yīng)用系統(tǒng)數(shù)據(jù)采集和共享模式的改變,而管理員很難事先了解這些改變的后果。
??? (4)為了適應(yīng)企業(yè)新的數(shù)據(jù)共享需求,必須能夠通過簡(jiǎn)單的軟件配置或組裝方法(而不是開發(fā)新的代碼)來實(shí)現(xiàn)新的功能。
??? (5)由于數(shù)據(jù)源存儲(chǔ)在不同的宿主機(jī)上,所以必須提供便捷的方式,使之快速找到所要數(shù)據(jù)源,從而避免開發(fā)人員通過建立私有、冗余的數(shù)據(jù)源,達(dá)到降低數(shù)據(jù)集成與轉(zhuǎn)換代價(jià)的目的。
??? (6)為了滿足數(shù)據(jù)安全需求,應(yīng)提供統(tǒng)一的訪問控制、用戶識(shí)別和授權(quán)服務(wù),如果每個(gè)應(yīng)用都采用特有的授權(quán)和訪問控制方式,將給系統(tǒng)間的互操作和數(shù)據(jù)共享帶來了很大的障礙。
??? 上述一系列問題需要一種嶄新的數(shù)據(jù)管理和數(shù)據(jù)共享機(jī)制。
??? 美國(guó)國(guó)防部最早在其DII COE中提出數(shù)據(jù)共享工程(SHAred Data Engineering,SHADE)計(jì)劃。SHADE首先將各應(yīng)用系統(tǒng)的需求匯總,通過分析去掉冗余數(shù)據(jù)集,以提高公共數(shù)據(jù)的一致性,然后再將這些數(shù)據(jù)以所有應(yīng)用程序都認(rèn)可的形式存入數(shù)據(jù)庫(kù),實(shí)現(xiàn)數(shù)據(jù)與應(yīng)用程序的獨(dú)立性。SHADE還提供公共數(shù)據(jù)的一致性表示,軟件開發(fā)者可以容易地使用這些數(shù)據(jù),并與其專用數(shù)據(jù)結(jié)合。
??? SHADE實(shí)際上是DII COE提供的一種數(shù)據(jù)共享策略,它的作用不僅僅局限于軍事領(lǐng)域,它在數(shù)據(jù)標(biāo)準(zhǔn)化的基礎(chǔ)上,通過提供多種可重用軟件和數(shù)據(jù)組件,特別是引入數(shù)據(jù)仲裁機(jī)制,為遺留系統(tǒng)、現(xiàn)有系統(tǒng)和新研系統(tǒng)之間的數(shù)據(jù)共享與互操作提供了三種用法不同而基礎(chǔ)一致的解決方案:共享數(shù)據(jù)服務(wù)器、虛擬數(shù)據(jù)倉(cāng)庫(kù)和XML門戶,使數(shù)據(jù)共享技術(shù)的發(fā)展進(jìn)入了新的歷史階段。
3 數(shù)據(jù)標(biāo)準(zhǔn)化及其局限性
3.1 數(shù)據(jù)標(biāo)準(zhǔn)化是基礎(chǔ)

??? 數(shù)據(jù)共享工程的目標(biāo)是保護(hù)現(xiàn)有數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)記錄的投資;通過數(shù)據(jù)重用提高互操作性;提供數(shù)據(jù)融合的基礎(chǔ)。達(dá)到這一目標(biāo)的前提是數(shù)據(jù)的公共表示(Common Representation),而公共表示依賴于數(shù)據(jù)標(biāo)準(zhǔn)化工作。
公共表示為數(shù)據(jù)提供者和使用者提供公共的語(yǔ)法描述和語(yǔ)義解釋,以及有效的取值范圍。公共表示通過一個(gè)邏輯模型來維護(hù),但它可以有多種物理表現(xiàn)形式(如Informix、Sybase 或Oracle數(shù)據(jù)庫(kù),面向?qū)ο髷?shù)據(jù)庫(kù),XML文檔,UML模型或普通文件等)。
??? 由此可見,為了滿足數(shù)據(jù)共享需求,每個(gè)行業(yè)、企業(yè)和部門都應(yīng)當(dāng)建立統(tǒng)一的數(shù)據(jù)標(biāo)準(zhǔn)。
3.2 數(shù)據(jù)標(biāo)準(zhǔn)化只能提供部分解決方案
??? 數(shù)據(jù)標(biāo)準(zhǔn)化固然重要,假如每一個(gè)應(yīng)用系統(tǒng)都采用相同的數(shù)據(jù)表示,即數(shù)據(jù)的名稱、類型、結(jié)構(gòu)、表示方法和語(yǔ)義解釋都完全相同,那么數(shù)據(jù)互操作問題便不存在了。為了實(shí)現(xiàn)公共的數(shù)據(jù)表示,減少因數(shù)據(jù)異構(gòu)性問題而引發(fā)的數(shù)據(jù)互操作問題,各行業(yè)都非常重視數(shù)據(jù)標(biāo)準(zhǔn)化工作,甚至人們?cè)?jīng)希望通過標(biāo)準(zhǔn)化工作一勞永逸地解決數(shù)據(jù)共享與互操作問題。
??? 但是,人們很快就發(fā)現(xiàn),要建立和維護(hù)單一的、完整的、標(biāo)準(zhǔn)的數(shù)據(jù)模型是相當(dāng)困難的,有時(shí)甚至是不切實(shí)際的。為了使每一個(gè)應(yīng)用系統(tǒng)都采用同樣的數(shù)據(jù)表示,我們需要一個(gè)統(tǒng)一的、完整的、覆蓋所有應(yīng)用領(lǐng)域的數(shù)據(jù)模型。然而,由于人類認(rèn)知的局限性,很難成功地為大型企業(yè)(或行業(yè))建立這樣一個(gè)覆蓋所有細(xì)節(jié)的模型。事實(shí)上,每個(gè)大型企業(yè)(或行業(yè))都有許多不同的數(shù)據(jù)模型,其中每個(gè)數(shù)據(jù)模型只覆蓋一個(gè)功能域(如采購(gòu)、生產(chǎn)、銷售、財(cái)務(wù)等)。在開發(fā)應(yīng)用系統(tǒng)時(shí),應(yīng)根據(jù)不同的功能域選擇不同的數(shù)據(jù)模型或數(shù)據(jù)定義。當(dāng)基于不同模型的應(yīng)用系統(tǒng)之間需要進(jìn)行數(shù)據(jù)交換時(shí),將會(huì)引發(fā)數(shù)據(jù)互操作問題。
??? 其次,世界在變化,標(biāo)準(zhǔn)也將會(huì)隨之改變,而系統(tǒng)不可能同步適應(yīng)這種變化。例如,一個(gè)相當(dāng)穩(wěn)定的數(shù)據(jù)庫(kù)每三年需要修改一個(gè)數(shù)據(jù)模式,如果一個(gè)標(biāo)準(zhǔn)模型覆蓋100個(gè)這樣的數(shù)據(jù)庫(kù),那么每?jī)芍芫鸵獞?yīng)付一次這種改變。
??? 此外,系統(tǒng)可能需要與采用不同標(biāo)準(zhǔn)的信息系統(tǒng)交換數(shù)據(jù),這必然引起數(shù)據(jù)模型的異構(gòu)問題。例如在天氣模型化過程中,可能要與氣象學(xué)、海洋學(xué)等其它學(xué)科有交叉。
??? 再有,特定數(shù)據(jù)表示方法的選擇與標(biāo)準(zhǔn)化相抵觸。在某些情況下不同系統(tǒng)采用不同的數(shù)據(jù)表示方法可能有一定的合理原因。例如采用精密電子傳感器和人工觀測(cè)兩種不同方式觀測(cè)某個(gè)對(duì)象的時(shí)間特定時(shí),即使采用同一種數(shù)據(jù)模型來表示記錄結(jié)果,但也由于數(shù)據(jù)的精確度和可信度的不同,記錄的數(shù)據(jù)有著不同的意義。
??? 由此可見,數(shù)據(jù)標(biāo)準(zhǔn)化并不是完整的解決問題的方案。更好的方法是放松完整描述元數(shù)據(jù)的需求,允許系統(tǒng)開發(fā)者在自己的數(shù)據(jù)模式中描述元數(shù)據(jù),并且提供自動(dòng)解決元數(shù)據(jù)差別的工具。
4 基于EJB的數(shù)據(jù)仲裁
??? 在很多情況下,用戶都不愿意放棄自己的數(shù)據(jù)模式,以適應(yīng)其它系統(tǒng)所支持的標(biāo)準(zhǔn)模式。但為了在系統(tǒng)之間進(jìn)行數(shù)據(jù)交換,又必須能夠按照其它系統(tǒng)所需要的格式提供信息。數(shù)據(jù)仲裁(Data Mediation)方法在保持用戶原有數(shù)據(jù)模式的前提下,較好地解決了互操作問題。
??? 本節(jié)重點(diǎn)介紹我們?cè)O(shè)計(jì)的一種基于Enterprise JavaBeans和CORBA技術(shù)的數(shù)據(jù)仲裁服務(wù)器(簡(jiǎn)稱EJB仲裁器),它在公共數(shù)據(jù)表示(數(shù)據(jù)標(biāo)準(zhǔn)化)的基礎(chǔ)上,解決異構(gòu)數(shù)據(jù)模型之間的仲裁、轉(zhuǎn)換、集成與互操作問題。
??? 如圖1所示,EJB仲裁器是一個(gè)中間件(應(yīng)用服務(wù)器),用來完成兩個(gè)系統(tǒng)不同數(shù)據(jù)模式之間的數(shù)據(jù)轉(zhuǎn)換,它通過APIs接口為應(yīng)用系統(tǒng)提供數(shù)據(jù)仲裁服務(wù)。
??? EJB仲裁器按照下列步驟來處理信源(Source)和信宿(Target)之間的數(shù)據(jù)交換:
??? (1)接收來自信宿(接收方)的SQL語(yǔ)句;
??? (2)將接收到的SQL語(yǔ)句轉(zhuǎn)換為適合信源模式的等價(jià)的SQL語(yǔ)句;
??? (3)執(zhí)行對(duì)信源數(shù)據(jù)庫(kù)的查詢,并且將查詢結(jié)果轉(zhuǎn)換為信宿的格式;
??? (4)將轉(zhuǎn)換后的查詢結(jié)果返回信宿。
??? EJB仲裁器的作用實(shí)際上是系統(tǒng)之間的語(yǔ)義網(wǎng)關(guān),它使得接收方不僅可以查詢自身的數(shù)據(jù)庫(kù),還可以查詢信源數(shù)據(jù)庫(kù),就象自身的數(shù)據(jù)庫(kù)得到擴(kuò)充一樣,根本無需關(guān)心數(shù)據(jù)名稱和表示方法的差異。
??? EJB仲裁器與早期的專用(點(diǎn)對(duì)點(diǎn))轉(zhuǎn)換器的主要區(qū)別在于它能夠通過信源模式和信宿模式的數(shù)據(jù)描述自動(dòng)完成數(shù)據(jù)轉(zhuǎn)換,而無需人工編寫轉(zhuǎn)換代碼。

圖1 數(shù)據(jù)仲裁機(jī)制示意圖


?? EJB仲裁器運(yùn)行在Java虛擬機(jī)(JVM)上,它主要包含公共數(shù)據(jù)字典(Common Data Dictionary)和公共數(shù)據(jù)模式(Common Data Schema)和轉(zhuǎn)換函數(shù)庫(kù)(library)。其中,公共數(shù)據(jù)字典使所有系統(tǒng)都采用標(biāo)準(zhǔn)術(shù)語(yǔ),并且對(duì)標(biāo)準(zhǔn)術(shù)語(yǔ)的解釋都是唯一的;公共數(shù)據(jù)模式由覆蓋特定功能域的E-R數(shù)據(jù)模型表示;EJB仲裁器通過轉(zhuǎn)換函數(shù)庫(kù)為客戶端" title="客戶端">客戶端應(yīng)用提供SQL語(yǔ)句轉(zhuǎn)換和數(shù)據(jù)轉(zhuǎn)換服務(wù)。
??? 信源模式和信宿模式采用數(shù)據(jù)庫(kù)視圖來表示,在數(shù)據(jù)庫(kù)視圖中隱含了信源/信宿與公共實(shí)體之間的關(guān)聯(lián),并且包含每個(gè)數(shù)據(jù)元素的語(yǔ)義信息。EJB仲裁器可以根據(jù)不同情況選擇適當(dāng)?shù)霓D(zhuǎn)換函數(shù)。除了模式關(guān)聯(lián)以外,在信源/信宿模式中的每個(gè)屬性都有相應(yīng)的元數(shù)據(jù),用來描述其含義和特征(如精度、單位等)。數(shù)據(jù)元素的含義由公共數(shù)據(jù)字典定義。每當(dāng)需要在信源模式和信宿模式之間建立數(shù)據(jù)元素的關(guān)聯(lián)時(shí),EJB仲裁器通過搜索轉(zhuǎn)換函數(shù)庫(kù)來組織過程調(diào)用序列。
??? 下面解釋客戶端應(yīng)用怎樣通過API調(diào)用來訪問EJB仲裁器。
??? 最簡(jiǎn)單的情況是客戶端應(yīng)用和EJB仲裁器位于同一JVM上,此時(shí)客戶端應(yīng)用可以直接調(diào)用EJB仲裁器提供的API接口。但在通常情況下,客戶端應(yīng)用與EJB仲裁器分布在不同的服務(wù)器上,這時(shí)需要借助CORBA、.NET、RMI等分布式計(jì)算技術(shù)來提供仲裁服務(wù)。
??? 我們采用CORBA技術(shù),即將EJB仲裁器與CORBA服務(wù)器綁定,并以CORBA服務(wù)的形式提供API接口。
??? 下面具體介紹客戶端程序怎樣利用CORBA訪問不同Java虛擬機(jī)上的EJB仲裁服務(wù)。
??? (1)啟動(dòng)EJB仲裁服務(wù)器
??? 通過位于/bin目錄的啟動(dòng)程序(如startMediation.sh)啟動(dòng)EJB仲裁器。
??? 如果利用缺省的配置文件啟動(dòng)EJB仲裁器,可以啟動(dòng)它提供的所有服務(wù),但不能在CORBA注冊(cè)表中綁定仲裁服務(wù)API接口。
??? (2)配置參數(shù)
??? 為了將EJB仲裁服務(wù)與CORBA服務(wù)綁定,需要編輯位于/conf目錄的文件corba_parameters.conf并且將EnableCORBA標(biāo)志設(shè)置為"true"。另外,還要設(shè)置適當(dāng)?shù)亩丝谔?hào)(如900)。
??? 在將路徑設(shè)置為/bin,并啟動(dòng)仲裁服務(wù)之后,需要用tnameserv命令啟動(dòng)“tnameserv”。現(xiàn)在用修改過的corba_parameters.conf文件啟動(dòng)EJB仲裁器。這時(shí),不僅將EJB仲裁器上的所有服務(wù)啟動(dòng),而且將所有類型的仲裁服務(wù)API登記在CORBA注冊(cè)表中。于是,客戶端應(yīng)用便可訪問這些API接口。
??? 下面用一個(gè)實(shí)例程序來說明客戶端程序訪問EJB仲裁器的過程。
import org.omg.CORBA.ORB;
import org.omg.CosNaming.NameComponent;
import org.omg.CosNaming.NamingContext;
import org.omg.CosNaming.NamingContextHelper;
import com.adventnet.mediation.service.poll.corba.PollAPI_CI;
import
com.adventnet.mediation.service.poll.corba.PollAPI_CIHelper;
public class Sample
{
public Sample()
{
}
public static void main(String[] args)
{
try
{
// 創(chuàng)建并初始化ORB
ORB orb = ORB.init(args, null);
// 獲得命名服務(wù)
org.omg.CORBA.Object objRef =
orb.resolve_initial_references("NameService");
NamingContext ncRef = NamingContextHelper.narrow(objRef);
// 對(duì)象引用
NameComponent nc = new NameComponent("PollAPI", "");
NameComponent path[] = {nc};
// 為PollAPI_CI取句柄
PollAPI_CI api = PollAPI_CIHelper.narrow(ncRef.resolve(path));
System.out.println(" 被初始化為 " + api.isInitialized());
}
catch (Exception e)
{
System.out.println(“在通過CORBA訪問PollAPI時(shí)出現(xiàn)異?!?+ e);
}
}
}
5 結(jié)束語(yǔ)
??? 數(shù)據(jù)互操作性是當(dāng)前信息系統(tǒng)面臨的重要問題,將來也仍然會(huì)有這種問題。數(shù)據(jù)標(biāo)準(zhǔn)化方法有助于解決這一問題,但它不是完整的解決方案。我們開發(fā)了一種基于EJB的數(shù)據(jù)仲裁服務(wù)器,用來彌補(bǔ)數(shù)據(jù)標(biāo)準(zhǔn)化方法丟失的部分解決方案。
數(shù)據(jù)標(biāo)準(zhǔn)化方法是數(shù)據(jù)共享的基礎(chǔ),數(shù)據(jù)仲裁方法是對(duì)數(shù)據(jù)標(biāo)準(zhǔn)化方法的必要補(bǔ)充。數(shù)據(jù)標(biāo)準(zhǔn)化與數(shù)據(jù)仲裁相結(jié)合是今后數(shù)據(jù)互操作技術(shù)的發(fā)展方向,與之相關(guān)的一些數(shù)據(jù)互操作關(guān)鍵技術(shù):公共表示與元數(shù)據(jù)、數(shù)據(jù)仲裁和語(yǔ)義仲裁、中間件、數(shù)據(jù)倉(cāng)庫(kù)、XML門戶等也將成為研究熱點(diǎn)。
參考文獻(xiàn)
[1] Sciore, E., Siegel, M., Rosenthal, A. Using semantic values to facility interoperability among heterogeneous information systems. ACM Transactions on Database Systems, 1994.
[2] Jerry Smith (DISA Interoperability Directorate), “The Data Is Key”, CALS/EC International Symposium, 2001.
[3] John S. Erickson, Information Objects and Rights Management: A Mediation-based Approach to DRM Interoperability, D-Lib Magazine April 2001.
[4] Sun Microsystems White Paper, Interoperability Across the Technical Enterprise, Technical Computing in the Network Economy, 1999.
[5] OMG, The Common Object Request Broker: Architecture and Specification (Version 2.4.2), Febuary 2001.

?

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。