欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Java IDL: 使用 CORBA

使用 CORBA 和 Java IDL


關(guān)于 CORBA

CORBA(Common Object Request Broker Architecture,公用對象請求代理體系結構)是 Object Management Group (OMG) 協(xié)會(huì )開(kāi)發(fā)的標準分布式對象體系結構。自 1989 年以來(lái),OMG 的任務(wù)就是為開(kāi)放式軟件總線(xiàn)或對象請求代理(Object Request Broker,ORB)提供體系結構規范。以此為基礎,不同廠(chǎng)商編寫(xiě)的對象組件可跨過(guò)網(wǎng)絡(luò )和操作系統實(shí)現互操作。該標準允許 CORBA 對象相互調用,而無(wú)需知道所訪(fǎng)問(wèn)對象的位置或實(shí)現被請求對象所用的語(yǔ)言。OMG 指定的接口定義語(yǔ)言(Interface Definition Language,IDL)用于為 CORBA 對象定義接口。

CORBA 對象與典型編程語(yǔ)言對象的不同之處在于:

  • CORBA 對象可在網(wǎng)絡(luò )上任何位置定位。
  • CORBA 對象可與其它平臺上的對象實(shí)現互操作。
  • CORBA 對象可用任何編程語(yǔ)言編寫(xiě),只要存在從 OMG IDL 到該語(yǔ)言的映射(當前指定的映射包括 Java、C++、C、Smalltalk、COBOL 及 Ada)。

關(guān)于 Java IDL

Java IDL 是同 JDK 1.2 一起提供的對象請求代理。它可與 idltojava 編譯器(可從 Java Developer Connection 下載)一起用于定義、實(shí)現和訪(fǎng)問(wèn)用 Java 編程語(yǔ)言編寫(xiě)的 CORBA 對象。Java IDL 符合 CORBA/IIOP 2.0 規范 (orbos/97-02-25) 和 IDL-to-Java 語(yǔ)言映射(orbos/98-01-06 終版)標準。

Java IDL ORB 支持瞬態(tài) CORBA 對象 - 該對象的生命期受服務(wù)器進(jìn)程生命期的限制。Java IDL 也提供瞬態(tài)名字服務(wù)器,以便將對象組織為樹(shù)型目錄結構。名字服務(wù)器符合在 CORBAservices:通用對象服務(wù)規范中所述的命名服務(wù)規范標準。瞬態(tài)對象及名字服務(wù)器將在下文中討論。

接口庫并不是作為 Java IDL 的組成部分來(lái)提供的。由于一般情況下客戶(hù)機可訪(fǎng)問(wèn)已生成的 stub 文件,因此不需要接口庫。

Nutshell 中的 CORBA 概念

本節引入的概念在 CORBA/IIOP 2.0 規范中有更全面的論述。

下圖展示從客戶(hù)機傳送到服務(wù)器 CORBA 對象實(shí)現的方法請求??蛻?hù)機是調用 CORBA 對象上某方法的任意代碼(其本身也可能是 CORBA 對象)。servant 是對象實(shí)現的實(shí)例 - 實(shí)現該 CORBA 對象的實(shí)際代碼和數據。

CORBA 對象的客戶(hù)機具有對該對象的對象引用,并用該對象引用來(lái)發(fā)出方法請求。如果該服務(wù)器對象是遠程對象,則對象引用將指向 stub 函數,該函數則使用 ORB 機制向服務(wù)器對象傳送調用。stub 代碼使用 ORB 來(lái)標識運行該服務(wù)器對象的計算機,并且向該計算機的 ORB 請求與該對象服務(wù)器連接。stub 代碼取得該連接時(shí),會(huì )將對象引用和參數發(fā)送到鏈接目標對象實(shí)現的 skeleton 代碼。skeleton 代碼將該調用和參數變換為所需的、與實(shí)現有關(guān)的格式,然后調用該對象。任何結果或異常都會(huì )沿同一路徑返回。

客戶(hù)機不知 CORBA 對象的位置、實(shí)現詳情及用來(lái)訪(fǎng)問(wèn)該對象的 ORB。不同的 ORB 通過(guò)由 OMG 指定的 Internet InterORB 協(xié)議 (IIOP) 通訊。[CORBA/IIOP 2.0:ch 9,10]

客戶(hù)機只能調用在 CORBA 對象接口中指定的方法。CORBA 對象接口通過(guò) OMG 接口定義語(yǔ)言 (IDL) [CORBA/IIOP 2.0 ch3] 進(jìn)行定義。接口定義對象類(lèi)型,同時(shí)指定一組已命名的方法和參數及這些方法可能返回的異常類(lèi)型。IDL 編譯器(如 idltojava )可依照相應的 OMG 語(yǔ)言映射將 CORBA 對象定義翻譯為指定的編程語(yǔ)言。因此,idltojava 編譯器將依照 IDL-Java 語(yǔ)言映射將 IDL 定義翻譯為 Java 結構。

idltojava 編譯器為每個(gè)對象類(lèi)型都生成 stub 和 skeleton 文件。stub 文件為客戶(hù)機提供用客戶(hù)機編程語(yǔ)言表示的對 IDL 定義的方法的訪(fǎng)問(wèn)。服務(wù)器 skeleton 文件將對象實(shí)現粘合到 ORB 運行時(shí),ORB 使用 skeleton 將方法分配給對象實(shí)現實(shí)例 (servants)。

定義并實(shí)現 CORBA 對象

開(kāi)發(fā) CORBA 對象的目的是創(chuàng )建并注冊對象服務(wù)器或普通服務(wù)器。服務(wù)器是一個(gè)程序,其中包含一個(gè)或多個(gè)對象類(lèi)型的實(shí)現并注冊到 ORB。例如,用戶(hù)可以開(kāi)發(fā)一個(gè)桌面排版服務(wù)器,實(shí)現“Document”對象類(lèi)型、“Paragraph”對象類(lèi)型及其它相關(guān)的對象類(lèi)型。

CORBA 對象接口

所有 CORBA 對象都支持定義對象類(lèi)型的 IDL 接口。一個(gè)接口可繼承一個(gè)或多個(gè)其它接口。IDL 語(yǔ)法與 Java 或 C++ 非常相似,CORBA 的 IDL 文件在功能方面與語(yǔ)言無(wú)關(guān),類(lèi)似于 C++ 頭文件。將 IDL 映射到每個(gè)編程語(yǔ)言后,即可提供從該語(yǔ)言到對象接口的訪(fǎng)問(wèn)。有了 Java IDL,這些 IDL 接口可用 idltojava 編譯器翻譯為 Java。對于每個(gè) IDL 接口,idltojava 都生成 Java 接口以及其它所需的 .java 文件,包括客戶(hù)機 stub 和服務(wù)器 skeleton。

IDL 接口聲明一組客戶(hù)機可訪(fǎng)問(wèn)的操作、異常及有類(lèi)型的屬性(值)。每個(gè)操作都有一個(gè)說(shuō)明定義操作的名稱(chēng)、參數、結果及異常。以下為描述經(jīng)典“Hello World”程序的簡(jiǎn)單 IDL 接口。

module HelloApp{interface Hello{string sayHello();};};

當出現錯誤條件時(shí),操作會(huì )拋出異常。異常的類(lèi)型表明了所遇到的錯誤種類(lèi)。除正常結果外,客戶(hù)機還必須準備處理每個(gè)操作的已定義異常和 CORBA 標準異常。

基于 Java 語(yǔ)言的實(shí)現

一旦定義了 IDL 接口,且 idltojava 編譯器基于 .idl 文件運行,就可編寫(xiě)包含方法實(shí)現的 .java 文件。而后,.java 實(shí)現文件即可被編譯并鏈接到 idltojava 生成的 .java 文件和 ORB 庫,以便創(chuàng )建對象服務(wù)器。

對象實(shí)現將為它所支持的接口的所有操作和屬性定義行為。一個(gè)接口可能有多個(gè)實(shí)現(例如每個(gè)實(shí)現都用來(lái)強調特定的時(shí)間和空間權衡)。實(shí)現定義創(chuàng )建/破壞接口和對象的行為。

由于只有服務(wù)器能創(chuàng )建新的 CORBA 對象,因此應為每種對象類(lèi)型定義并實(shí)現工廠(chǎng)對象接口。例如,如果一種對象類(lèi)型為 Document,則帶有 create 方法的 DocumentFactory 對象類(lèi)型將作為服務(wù)器的一部分來(lái)定義和實(shí)現(注意,“create”不是保留的,可以用任何方法名)。而后,create 方法的實(shí)現可用 new 來(lái)創(chuàng )建對象。例如:

  DocumentServant document  = new DocumentServant():orb.connect(document);

可在 Document 上定義并實(shí)現 destroy 方法,或者該對象可無(wú)限延續(注意,“destroy”不是保留的,因此可使用任何名稱(chēng))。

Java IDL ORB 只支持瞬態(tài)對象,其生命期受服務(wù)器進(jìn)程生命期的限制。雖然當服務(wù)器進(jìn)程終止運行時(shí)瞬態(tài)對象也會(huì )消失,但該對象的實(shí)現可以來(lái)將其狀態(tài)保存到文件中,并在創(chuàng )建時(shí)從該文件重新初始化。

客戶(hù)機實(shí)現

客戶(hù)機代碼與 idltojava 生成的 .java 文件和 ORB 庫鏈接。在 Hello World 實(shí)例中提供了應用程序和applet客戶(hù)機的示例。

客戶(hù)機只可使用服務(wù)器提供的已公布工廠(chǎng)接口來(lái)創(chuàng )建 CORBA 對象。同樣,只有該對象公布一個(gè)破壞方法,客戶(hù)機才能刪除 CORBA 對象。由于一個(gè) CORBA 對象可能為網(wǎng)絡(luò )上的很多客戶(hù)機所共享,因此,只有對象服務(wù)器才能夠知道該對象何時(shí)成為垃圾。

客戶(hù)機代碼在 CORBA 對象上發(fā)送方法請求的唯一方式是經(jīng)由該對象的對象引用。對象引用是不透明結構,它標識 CORBA 對象的主機、主機服務(wù)器監聽(tīng)請求的端口及在進(jìn)程中指定對象的指針。因為 Java IDL 只支持瞬態(tài)對象,所以在服務(wù)器進(jìn)程終止并重啟時(shí)該對象引用將無(wú)效。

客戶(hù)機一般以如下方式獲得對象引用:

  • 從工廠(chǎng)對象獲得。例如,為創(chuàng )建新的 Document,客戶(hù)機可調用 DocumentFactory 對象上的 create 方法。DocumentFactory create 方法將 Document 的對象引用返回到客戶(hù)機。
  • 從 nameservice 獲得。例如,通過(guò)在 nameservice 上發(fā)送請求,客戶(hù)機可獲得 DocumentFactory 的對象引用。
  • 從專(zhuān)門(mén)創(chuàng )建自對象引用的字符串獲得。

一旦獲得對象引用,客戶(hù)機必須將它限定為適當類(lèi)型。IDL 支持繼承,其繼承的根目錄為 IDL 中的 Object,即 Java 中的 org.omg.CORBA.Objectorg.omg.CORBA.Object 自然是 java.lang.Object 的子類(lèi))。某些操作(特別是名稱(chēng)查詢(xún)和解串)返回使用 idltojava 編譯器生成的幫助類(lèi)可將其限定為所期望的派生類(lèi) org.omg.CORBA.Object。由于 Java 運行時(shí)無(wú)法總是知道 CORBA 對象的確切類(lèi)型,因此必須顯式地限定 CORBA 對象類(lèi)型。

Java IDL 瞬態(tài)名字服務(wù)器

Java IDL Transient Nameservice 是同 Java IDL 一起提供的對象服務(wù)器。在命令行提示中使用 tnameserv 可以啟動(dòng)此名字服務(wù)器。本對象服務(wù)器符合在本頁(yè)中先前部分所述的標準對象實(shí)現及調用技術(shù)。

名字服務(wù)器通過(guò)與文件目錄相似的樹(shù)型結構按名稱(chēng)存儲對象引用??蛻?hù)機可通過(guò)名稱(chēng)查找或解析對象引用。因為名字服務(wù)器是一種普通的 Java IDL 瞬態(tài)服務(wù)器,所以每次 tnameserv 終止運行時(shí),整個(gè)名稱(chēng)目錄結構都會(huì )丟失。

有關(guān)詳細信息,參見(jiàn)命名服務(wù)。


分布式應用程序似的概念 | 使用 CORBA | 詞匯表


版權所有© 1996-98 Sun Microsystems, Inc., 2550 Garcia Ave., Mtn. View, CA. 94043-1100 USA.,保留所有權利。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Applet與Servlet通訊的四種方法及其比較
RMI-IIOP
J2EE‘S EJB Technology
CORBA 入門(mén)
CORBA
CORBA和COM有哪些區別?只在OS上嗎?
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久