国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

一個簡單的 CORBA/java 示例

2019-11-18 13:40:29
字體:
供稿:網(wǎng)友

  6 月份,我們談過您為什么要使用 CORBA 和 java 技術(shù)。本月,我要通過一個可用的簡單示例,讓您開始探索 CORBA 技術(shù)的許多領(lǐng)域。不過,別忘了我們的目標(biāo)是,創(chuàng)建這樣一種分布式應(yīng)用程序:使駐留在一臺計算機上的客戶機能向運行于另一臺計算機上的服務(wù)發(fā)出請求。我們不想為諸如硬件或操作系統(tǒng)軟件等細(xì)節(jié)問題操心,而只是想讓這種服務(wù)能響應(yīng)客戶機的請求。

IDL 接口
全部 CORBA 結(jié)構(gòu)是從一個接口開始的,理解接口的最佳方法就是想像我的汽車,對,我的汽車。雖然您不熟悉它,但假如我對您說:“開上我的車,帶些三明治回來當(dāng)午餐”,恐怕您就不會懷疑自己能不能駕駛我的汽車。您可能想知道它停在哪里,以及開它是否安全,但是您會確信開我的車與開您的車差別不大。這是因為,在各種汽車當(dāng)中,人與汽車之間的接口已高度標(biāo)準(zhǔn)化了。我的轎車和您的跑車之間可能會有一些差異,但汽車的油門踏板、剎車和方向盤的安裝都是標(biāo)準(zhǔn)的,您一定能輕松快速上路。

因為 CORBA 與語言無關(guān),所以它依靠一種接口定義語言 (IDL),來表達(dá)客戶機如何向?qū)崿F(xiàn)接口的服務(wù)發(fā)出請求。我們的接口就是一個方法:add()。這個方法將取兩個數(shù)(兩個 IDL 的 long 型數(shù))并返回這兩個數(shù)之和。下面是我們的接口計算程序:

清單 1. calcsimpl.idl
module corbasem {
module gen {
module calcsimpl {
interface calculator {
long add(in long x, in long y);
};
};
};
};



這個接口中的 IDL 要害字有:module、interface、long 和 in。IDL 使用要害字 module 來創(chuàng)建名稱空間,并且此要害字準(zhǔn)確地映射為 Java 要害字 package。運行 IDL-to-Java 編譯器時,生成的 Java 文件將會存到名為 calcsimpl 的子目錄中。IDL 要害字 interface 完美地映射為 Java 接口,并代表一種抽象類型,因為兩者都只定義您與對象通訊的方式,而不涉及對象的實現(xiàn)。IDL 要害字 long 是一種基本的整數(shù)類型,它至少映射為一個 4 字節(jié)的類型,這種類型在 Java 代碼中就是 int。

想一想執(zhí)行遠(yuǎn)程方法調(diào)用的機制,您就會發(fā)現(xiàn)定義參數(shù)傳遞的方向(客戶機到服務(wù)器、服務(wù)器到客戶機或者雙向傳遞)是多么的有意義。在 IDL 操作中,這些方向用 in、out 和 inout 要害字來聲明,每個參數(shù)都必須聲明方向,以便使對象請求代理程序 (ORB) 知道該參數(shù)的去向。這會影響到為發(fā)送而進(jìn)行的參數(shù)打包、參數(shù)解包以及內(nèi)存治理。ORB 對參數(shù)了解得越多,它的效率就越高。要害字 in 表明 long x 和 long y 是從客戶機傳遞到服務(wù)器。

圖 1. 參與 CORBA 請求的各個部分


IDL 編譯器 需要 IDL 編譯器嗎?
您可能已經(jīng)有了 ORB 供給商和 IDL-to-Java 編譯器。但假如還沒有,您從哪里獲取呢?這里有好多,而且有些還可以免費下載。我推薦 Object Oriented Concepts, Inc. 的 Orbacus ORB。假如不將其用于商業(yè)目的,它還可以免費下載,而且完全符合 CORBA 2.3 規(guī)范。另外一個可試用 60 天的編譯器是 InPRise 的 Visibroker,也完全符合 CORBA 2.3 規(guī)范并且可下載。如想獲得這兩種產(chǎn)品,請參閱參考資料。


接口定義以后,必須在 ORB 供給商提供的 IDL-to-Java 編譯器上運行。IDL 編譯器是一種精巧的實用程序,它生成 IDL 的 stub 和 skeleton 以及其它支持文件。生成的這些源文件,大部分將增強 CORBA 標(biāo)準(zhǔn)中定義的特定 IDL 類型的打包功能。編譯器將生成大部分網(wǎng)絡(luò)探測 (plumbing),這在分布式系統(tǒng)中非常重要。在最基本的級別中,IDL-to-Java 編譯器只是一個按 CORBA 2.3 規(guī)范的定義來實現(xiàn)從 IDL 到 Java 語言映射的程序。手動生成這些代碼既枯燥又費時,還輕易出錯;IDL-to-Java 編譯器會處理這一切,所以您就不用操心啦;同時,它會用一定的規(guī)則約束您,并強制您執(zhí)行封裝。IDL-to-Java 編譯器將把 CORBA-land 規(guī)則強加給您的系統(tǒng)。

輸入下面的命令,從 Orbacus 執(zhí)行 IDL-to-Java 編譯器,把所有生成的文件都放在 CLASSPATH 的輸出目錄下。

清單 2. 調(diào)用 IDL-to-Java 編譯器 jidl --output-dir c:/_work/corbasem calculator.idl



生成了什么呢?這個命令生成了構(gòu)建實現(xiàn)所需要的全部 Java 源文件。IDL-to-Java 編譯器可確保所定義的接口遵守 CORBA 規(guī)范的規(guī)則。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 武平县| 胶州市| 班玛县| 上虞市| 启东市| 凤阳县| 三门峡市| 垣曲县| 潜江市| 长武县| 阆中市| 兴文县| 渝中区| 普兰县| 舒兰市| 凌云县| 交城县| 石林| 德钦县| 石门县| 昌邑市| 武川县| 瓮安县| 无棣县| 江城| 太原市| 东明县| 民县| 东兰县| 晋州市| 弋阳县| 来安县| 尼玛县| 昌乐县| 霍城县| 宜宾县| 曲麻莱县| 海伦市| 临邑县| 会宁县| 高清|