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

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

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

開(kāi)通VIP
RMI-IIOP

RMI-IIOP

RMI 和 CORBA 常被視為相互競爭的技術(shù),因為兩者都提供對遠程分布式對象的透明訪(fǎng)問(wèn)。但這兩種技術(shù)實(shí)際上是相互補充的,一者的長(cháng)處正好可以彌補另一者的短處。RMI 和 CORBA 的結合產(chǎn)生了 RMI-IIOP,RMI-IIOP 是企業(yè)服務(wù)器端 Java 開(kāi)發(fā)的基礎。在本文中,Java 開(kāi)發(fā)者 Damian Hagge 簡(jiǎn)要介紹了 RMI-IIOP,然后為您展示如何構建和運行一個(gè)簡(jiǎn)單的、基于 Java 的 RMI-IIOP 客戶(hù)機/服務(wù)器應用程序。請親自看看 RMI 能在 IIOP 上工作得多么好。

1997 年,IBM 和 Sun Microsystems 啟動(dòng)了一項旨在促進(jìn) Java 作為企業(yè)開(kāi)發(fā)技術(shù)的發(fā)展的合作計劃。兩家公司特別著(zhù)力于如何將 Java 用作服務(wù)器端語(yǔ)言,生成可以結合進(jìn)現有體系結構的企業(yè)級代碼。所需要的就是一種遠程傳輸技術(shù),它兼有 Java 的 RMI(Remote Method Invocation,遠程方法調用)較少的資源占用量和更成熟的 CORBA(Common Object Request Broker Architecture,公共對象請求代理體系結構)技術(shù)的健壯性。出于這一需要,RMI-IIOP 問(wèn)世了,它幫助將 Java 語(yǔ)言推向了目前服務(wù)器端企業(yè)開(kāi)發(fā)的主流語(yǔ)言的領(lǐng)先地位。

在本文中,我將簡(jiǎn)要介紹 RMI-IIOP,目標是使您能開(kāi)始在企業(yè)開(kāi)發(fā)解決方案中使用這一技術(shù)。要解釋 RMI-IIOP 究竟是什么,我認為提供一些關(guān)于 CORBA 和 RMI 的信息是重要的,這些信息您在各個(gè)技術(shù)的典型介紹中可能找不到。如果您對 CORBA 或 RMI 的基礎知識不熟悉,我建議您在往下讀之前先閱讀一些介紹性信息。請參閱參考資料,那里挑選了一些文章和教程。

在我具體討論 RMI-IIOP 之前,我們將先看一下 CORBA 和 RMI 用來(lái)對請求進(jìn)行數據編入的機制。CORBA 將是我們的主要示例,因為 RMI-IIOP 數據編入是建立在 CORBA 傳輸協(xié)議(IIOP)的基礎上的。我們將回顧一下該傳輸協(xié)議和 ORB(object request broker,對象請求代理)在網(wǎng)絡(luò )上發(fā)送請求、定位遠程對象和傳輸對象方面的基本功能。

遠程對象傳輸
對 CORBA 請求進(jìn)行數據編入是通過(guò)使用 IIOP 協(xié)議做到的。簡(jiǎn)言之,IIOP 將以標準化格式構造的任何 IDL(Interface Definition Language,接口定義語(yǔ)言)的元素表示為一系列字節。那就假設有一個(gè) Java 客戶(hù)機正在將一個(gè) CORBA 請求分派到 C++ 服務(wù)器吧??蛻?hù)機應用程序以 Java 接口的形式擁有遠程對象的引用,并調用該接口的一個(gè)操作。本質(zhì)上是,接口調用它對該操作的相應實(shí)現,這個(gè)實(shí)現將位于存根(stub)(存根是您將已經(jīng)用 idlj 從 IDL 生成了的)。

存根把方法調用分派到 ORB 中,ORB 由兩部分組成:客戶(hù)機 ORB 和服務(wù)器 ORB??蛻?hù)機 ORB 的職責是對請求進(jìn)行數據編入,放到網(wǎng)絡(luò )上,傳往特定位置。服務(wù)器 ORB 的職責是偵聽(tīng)從網(wǎng)絡(luò )上傳下來(lái)的請求,并將這些請求轉換成語(yǔ)言實(shí)現能夠理解的方法調用。要了解對 CORBA ORB 的角色的更深入討論,請參閱參考資料部分。

存根分派了方法調用之后,客戶(hù)機 ORB 將請求和所有參數轉換成標準化字節格式,在這種情況中是 IIOP。接著(zhù),請求通過(guò)導線(xiàn)被發(fā)送到服務(wù)器 ORB,服務(wù)器 ORB 應該正在偵聽(tīng)傳入請求。服務(wù)器端 ORB 將讀進(jìn)數據的字節并將請求轉換成對 C++ 服務(wù)器實(shí)現有意義的東西。C++ 服務(wù)器方法將執行它的功能(即調用所請求的方法)并使用相同的機制通過(guò) IIOP 將結果返回給客戶(hù)機。

RMI 以類(lèi)似的方式處理請求,但是它使用 JRMP(Java Remote Messaging Protocol,Java 遠程消息傳遞協(xié)議)作為其傳輸協(xié)議。當然,RMI 傳輸還涉及 Java 對象的序列化。

CORBA 和 RMI 的差異
  • CORBA 運行在 IIOP 協(xié)議之上;RMI 使用 JRMP。
  • CORBA 是獨立于語(yǔ)言的;RMI 是純粹 Java 到 Java 的。
  • RMI 使用 JNDI 定位遠程對象;CORBA 使用 CosNaming。
  • RMI 會(huì )將對象序列化;CORBA 則不然。

遠程對象定位
CORBA 使用 CosNaming 命名服務(wù)定位遠程對象。CosNaming 為名稱(chēng)服務(wù)器保存對 CORBA 服務(wù)器進(jìn)程的綁定(或引用)提供了一個(gè)框架。當 CORBA 客戶(hù)機向名稱(chēng)服務(wù)發(fā)送 CosNaming 請求,請求給定名稱(chēng)的服務(wù)器進(jìn)程時(shí),名稱(chēng)服務(wù)返回該進(jìn)程的可互操作對象引用(interoperable object reference(IOR))。接著(zhù),客戶(hù)機使用該 IOR 直接與服務(wù)器進(jìn)程通信。

IOR 包含關(guān)于服務(wù)器進(jìn)程的信息,例如服務(wù)器進(jìn)程的位置。CosNaming 服務(wù)的缺點(diǎn)之一是,IOR 對人類(lèi)而言是難以看懂的 — 至少對我們這些沒(méi)有電子大腦的人來(lái)說(shuō)是這樣。相反地,RMI 對用戶(hù)則要友好一些。它使用運行在 JNDI 之上的注冊中心(與命名服務(wù)極為相似)來(lái)定位遠程對象。RMI 注冊中心使用 Java Reference 對象(它由若干個(gè) RefAddr 對象組成)來(lái)識別和定位遠程對象。這些 Java 對象比 IOR 對用戶(hù)更加友好。

不久前,COBRA 將可互操作命名服務(wù)(Interoperable Naming Service(INS))結合進(jìn)了它的對象-定位(object-location)模式。INS 在 CosNaming 上運行,使用人類(lèi)可以閱讀的 URL 作它的對象位置。INS 不使用命名服務(wù);相反地,它將調用直接發(fā)送到指定的 URL。請參閱參考資料了解關(guān)于 INS 的更多信息。

RMI 對 CORBA
那么,哪一個(gè)更好呢:是 CORBA 還是 RMI?答案取決于您想做什么。CORBA 是一個(gè)運行在業(yè)界標準的第三或第四代協(xié)議上的、經(jīng)過(guò)試驗和測試的大體系結構。如果考慮到 CORBA 提供的所有附件(例如:事務(wù)處理、安全攔截器、事件通道,還有更多)的話(huà),則 CORBA 看來(lái)是企業(yè)應用程序的解決方案。CORBA 的最大缺點(diǎn)是它很復雜。要熟練使用 CORBA,開(kāi)發(fā)者通常要經(jīng)歷陡峭的培訓曲線(xiàn)。

相反地,RMI 相當容易學(xué)習。創(chuàng )建一個(gè)客戶(hù)機/服務(wù)器實(shí)現,綁定到注冊中心和遠程對象,使用 RMI 調用和/或接收請求都相當簡(jiǎn)單。RMI 的資源占用量也比 CORBA 小得多,因為 JRMP 是開(kāi)銷(xiāo)比 IIOP 小得多的協(xié)議。但是,RMI 缺乏 CORBA 的工業(yè)級的附件,而且是純基于 Java 的機制。那么,我們真正需要的就是 RMI 的靈活性和易用性以及 CORBA 的企業(yè)就緒性,對嗎?那就開(kāi)始討論 RMI-IIOP 吧。

為什么是 RMI-IIOP?
  • RMI-IIOP 兼有 CORBA 的強度和 RMI 的靈活性。
  • 開(kāi)發(fā)者很容易就可以使用 RMI-IIOP,RMI-IIOP 也易于集成到多數企業(yè)基礎架構中。

RMI-IIOP 概覽
RMI-IIOP 讓您僅需極少修改就可以在 IIOP 上運行 RMI 調用。借助于 RMI-IIOP,您可以編寫(xiě)簡(jiǎn)單易懂的 Java 代碼,同時(shí)使用 CORBA 提供的豐富的企業(yè)功能套件。而且,代碼的靈活性足夠大,可以運行在 RMI IIOP 上。這意味著(zhù),您的代碼可以在純 Java 環(huán)境中運行(當小的資源占用量和靈活性很關(guān)鍵時(shí)),或者對代碼作少量修改后集成到現有的 CORBA 基礎架構中。

RMI-IIOP 很強大的功能之一是,它讓您編寫(xiě)純 Java 客戶(hù)機/服務(wù)器實(shí)現而不喪失 RMI 類(lèi)序列化的靈活性。RMI-IIOP 通過(guò)覆蓋 Java 序列化并在導線(xiàn)上將 Java 類(lèi)轉換成 IIOP 做到這一點(diǎn)。在另一端,Java 類(lèi)被作為 IIOP 從導線(xiàn)上讀下來(lái),接著(zhù)創(chuàng )建這個(gè)類(lèi)的一個(gè)新實(shí)例(使用反射),類(lèi)的所有成員的值都完整無(wú)缺 — :這就是 IIOP 上的 Java 序列化!

為了讓 RMI-IIOP 實(shí)現透明的對象定位,ORB 供應商歷史上曾經(jīng)使用 Java CosNaming 服務(wù)提供者(或用外行人的話(huà)說(shuō),是插件)。該插件在 JNDI API 之下工作,訪(fǎng)問(wèn) CORBA 命名服務(wù)。盡管我沒(méi)有在這里花篇幅來(lái)說(shuō)明原因,但這種命名解決方案并不理想。其結果是,許多供應商 — 尤其是應用服務(wù)器供應商 — 為 RMI-IIOP 開(kāi)發(fā)了專(zhuān)門(mén)的對象定位機制。

RMI-IIOP 也支持作為 Java CosNaming 服務(wù)的一個(gè)擴展的 INS。因為我相信 INS 將確定對象定位的未來(lái)方向,所以我們在本文將討論的代碼示例使用 INS。

注:因為 Sun 尚未完全遵循 OMG INS 標準,也尚未公開(kāi) org.omg.CORBA.ORB 接口的 register_initial_reference,所以本文提供的源代碼將不能與 Sun JDK 一起工作。您將需要 IBM Developer Kit for Java technology,版本 1.3.1 或更高版本。不過(guò),我已經(jīng)創(chuàng )建了一個(gè)使用命名服務(wù)的與 Sun 兼容的示例,您可以從參考資料部分下載它。

自己動(dòng)手構建 RMI-IIOP
說(shuō)得夠多了,讓我們來(lái)編寫(xiě)代碼吧!在以下幾部分中,我們將構建一個(gè)簡(jiǎn)單的、基于 Java 的客戶(hù)機/服務(wù)器 RMI-IIOP 應用程序。這個(gè)應用程序由三個(gè)部分組成:RMI 接口、服務(wù)器應用程序和客戶(hù)機應用程序。示例以在 IIOP 之上的 Java 序列化為特色,所以您可以看到 Java 類(lèi)如何被客戶(hù)機實(shí)例化,如何傳遞到服務(wù)器,由服務(wù)器更改,然后將所有修改完整地回傳到客戶(hù)機。

第 1 部分:定義接口
在 RMI-IIOP 下,我們可以選擇使用 RMI 或 IDL 來(lái)定義接口。因為我們想看看 RMI 如何運行在 IIOP 上,所以我們將使用 RMI 定義示例接口。清單 1 是我們的簡(jiǎn)單示例的 RMI 接口:

清單 1. RMIInterface.java

/* * Remote interface */public interface RMIInterface extends java.rmi.Remote {    public String hello() throws java.rmi.RemoteException;    public SerClass alterClass(SerClass classObject)        throws java.rmi.RemoteException;}


RMIInterface 定義一個(gè) hello() 方法和一個(gè) alterClass(SerClass) 方法。后一個(gè)方法用 SerClass 作參數,SerClass 是一個(gè)實(shí)現 Serializable 的 Java 類(lèi),alterClass(SerClass) 方法返回一個(gè)類(lèi)型與其參數的類(lèi)型相同的類(lèi)。SerClass 是一個(gè)有幾個(gè)成員的簡(jiǎn)單的類(lèi),每個(gè)成員有相應的 getter 方法。這些方法如清單 2 所示:

清單 2. SerClass.java
/** *  This class is intended to be serialized over RMI-IIOP. */public class SerClass implements java.io.Serializable {    // members    private int x;    private String myString;    // constructor    public SerClass(int x, String myString)        throws java.rmi.RemoteException {        this.x=x;        this.myString=myString;    }         // some accessor methods    public int getX() {  return x;}    public void setX(int x) { this.x=x; }    public String getString() {  return myString;  }    public void setString(String str) { myString=str; }}

這就是我們簡(jiǎn)單的接口的全部?,F在我們來(lái)研究一下服務(wù)器類(lèi)。

第 2 部分:構建服務(wù)器
我們將使用一個(gè)既充當 RMIInterface 實(shí)現類(lèi)又包含 main 方法(以啟動(dòng)我們的服務(wù))的服務(wù)器類(lèi)(Server.java)。Server.java 繼承 javax.rmi.PortableRemoteObject。這樣,它就包含了將自己作為 Remote 接口綁定到 ORB 和開(kāi)始偵聽(tīng)請求所需要的全部功能。清單 3 是該服務(wù)器的代碼:

清單 3. Server.java
/* * Simple server */import java.util.*;import java.rmi.Remote;import java.rmi.RemoteException;import javax.rmi.PortableRemoteObject;import javax.rmi.CORBA.Tie;import javax.rmi.CORBA.Util;import org.omg.PortableServer.POA;import org.omg.PortableServer.*;import org.omg.PortableServer.Servant;import org.omg.CORBA.ORB;public class Server extends PortableRemoteObject     implements RMIInterface {    // must explicitly create default constructor     // to throw RemoteException    public Server() throws RemoteException {    }    // implementation of RMIInterface methods    public String hello() throws RemoteException {        return "Hello there!";    }    public SerClass alterClass(SerClass classObject)         throws RemoteException {        // change the values of SerClass and return it.    // add 5 to X        classObject.setX(            classObject.getX() + 5 );     // alter the string        classObject.setString(            classObject.getString() + " : I‘ve altered you" );         return classObject;    }       public static void main(String[] args) {        try {            // create the ORB passing in the port to listen on            Properties props = new Properties();            props.put("com.ibm.CORBA.ListenerPort","8080");            ORB orb = ORB.init(args, props);                // instantiate the Server            // this will automatically call exportObject(this)            Server s = new Server();                        // now get the Stub for our server object -          // this will be both            // a remote interface and an org.omg.CORBA.Object            Remote r=PortableRemoteObject.toStub(s);                                // register the process under the name          // by which it can be found                ((com.ibm.CORBA.iiop.ORB)orb).            register_initial_reference("OurLittleClient",            (org.omg.CORBA.Object)r);                System.out.println("Hello Server waiting...");            // it‘s that easy -         // we‘re registered and listening for incoming requests            orb.run();        } catch (Exception e) {            e.printStackTrace();        }    }}

呃,這里發(fā)生著(zhù)什么呢?
服務(wù)器應用程序的代碼很長(cháng),那我們就分開(kāi)來(lái)講吧。首先,如前面提到過(guò)的,Server 類(lèi)實(shí)現 RMIInterface 并為它的所有方法提供實(shí)現。您可以在代碼的前面部分看到 RMIInterfacehello() 方法和 alterClass(SerClass) 方法的實(shí)現。hello() 方法只是返回字符串“Hello there!”。alterClass(SerClass) 方法用 SerClass 對象作參數,修改成員的值,然后返回新的對象 — 全都通過(guò) RMI-IIOP。

Server.java 的 main 方法初始化一個(gè) ORB。這個(gè) ORB 將設置為 8080 的 com.ibm.CORBA.ListenerPort 屬性作為參數傳入。這將使得 ORB 在端口 8080 上偵聽(tīng)傳入請求。請注意,com.ibm.CORBA.ListenerPort 是一個(gè)專(zhuān)有的 IBM 屬性。如果您想在另一供應商的 ORB 上運行這些代碼,那您應該參閱該供應商的文檔,找到適當的屬性。(Sun 使用 com.sun.CORBA.POA.ORBPersistentServerPort,但它只在您使用 POA(portable object adapter,可移植對象適配器)伺服器(servant)時(shí)才能夠工作。)

初始化 ORB 后,main 方法接著(zhù)對 Server 對象進(jìn)行實(shí)例化。因為這個(gè) server 對象也是一個(gè) PortableRemoteObject,所以缺省構造函數會(huì )自動(dòng)調用 exportObject(this)。這個(gè)對象現在已經(jīng)就緒于接收遠程調用。

接著(zhù),我們需要通過(guò)調用 ORB.register_initial_reference(String,orb.omg.CORBA.Object) 注冊這個(gè)對象。為此,我們需要把我們的 server 對象作為 org.omg.CORBA.Object 的引用。調用 PortableRemoteObject.toStub(s) 實(shí)現了這一點(diǎn),因為所返回的對象都實(shí)現了 java.rmi.Remoteorg.omg.CORBA.Object。

然后,返回的 org.omg.CORBA.Object 對象向服務(wù)器端 ORB 注冊為“OurLittleClient”。為了確保 INS 請求能夠定位對象,我們使用注冊調用 register_initial_reference。當 INS 調用進(jìn)入 ORB 時(shí),ORB 將查找已經(jīng)以正在被請求的名稱(chēng)注冊的對象。由于我們將對象注冊為“OurLittleClient”,所以,當一個(gè) INS 調用進(jìn)入我們的服務(wù)器 ORB 要求“OurLittleClient”時(shí),我們將知道客戶(hù)機正在查找的是哪個(gè)對象。

最后,我確信您已經(jīng)注意到我們將 ORB 強制轉型成 com.ibm.CORBA.iiop.ORB。因為 Sun 尚未公開(kāi) org.omg.CORBA.ORB 接口的 register_initial_reference,所以 IBM SDK 也不能將它公開(kāi)。因此,我們必須將我們的 ORB 強制轉型成 IBM ORB。隨著(zhù) Sun 越來(lái)越遵循 OMG,JDK 的未來(lái)版本(1.4.0 后)將可能不需要這種強制轉型。

就是這樣!很簡(jiǎn)單吧 — 嗯,是有點(diǎn)。我們的服務(wù)器現在正在等待傳入客戶(hù)機 INS 請求。但客戶(hù)機怎么樣呢?

第 3 部分:構建客戶(hù)機
客戶(hù)機應用程序的代碼如清單 4 所示:

清單 4. Client.java
/* * Client application */import javax.rmi.PortableRemoteObject;import org.omg.CORBA.ORB;public class Client {  public static void main(String[] args) {    try {      ORB orb = ORB.init(args, null);             // here‘s the URL for the local host         String INSUrl =         "corbaloc:iiop:1.2@localhost:8080/OurLittleClient";                  // get the reference to the remote process         org.omg.CORBA.Object objRef=orb.string_to_object(INSUrl);         // narrow it into our RMIInterface         RMIInterface ri =   (RMIInterface)PortableRemoteObject.narrow(objRef, RMIInterface.class);              // call the hello method         System.out.println("received from server: "+ri.hello()+"\n");            // try RMI serialization         SerClass se = new SerClass(5, "Client string! ");         // pass the class to be altered on the server         // of course behind the scenes this class is being       // serialized over IIOP         se = ri.alterClass(se);         // now let‘s see the result         System.out.println("Serialization results :\n"+            "Integer was 5 now is "+se.getX()+"\n"+            "String was \"Client String! \"          now is \""+se.getString()+"\"");           } catch (Exception e) {            e.printStackTrace();        }    }}

如何分解客戶(hù)機代碼
客戶(hù)機代碼比服務(wù)器代碼要簡(jiǎn)單一些。我們初始化一個(gè) ORB,然后調用 string_to_object(String),其中的 string 是我們的 INS URL。構造 INS URL 相當簡(jiǎn)單:首先,我們指定我們使用 corbaloc URL(請參閱參考資料)和 IIOP 協(xié)議版本 1.2。接著(zhù),我們將主機名(www.whatever.com)和要連接的端口添加進(jìn)去。最后,我們指定我們要查找的服務(wù)的名稱(chēng)。結果 INS URL 是 corbaloc:iiop:1.2@localhost:8080/OurLittleClient。

當我們將這個(gè) URL 傳遞到 ORB.string_to_object(String) 時(shí),ORB 將分派一個(gè)請求到所指定的服務(wù)器,以請求所請求的服務(wù)。假設一切運轉正常,則 ORB 將接收回該服務(wù)的一個(gè)對象引用(實(shí)際上是一個(gè) IOR)。然后,我們將該對象引用強制轉型(narrow)成我們能夠使用的東西,即 RMIInterface,這樣,我們就為開(kāi)始調用方法做好了準備。

在調用了簡(jiǎn)單的 hello 方法(它應該不需要任何解釋吧)之后,我們可以開(kāi)始探討 RMI-IIOP 的序列化功能了。首先,我們創(chuàng )建一個(gè) SerClass,一個(gè)可序列化的 Java 類(lèi),并初始化它的成員變量。接著(zhù),我們將這個(gè)類(lèi)傳入到我們的方法,方法通過(guò) IIOP 將類(lèi)寫(xiě)出到服務(wù)器。服務(wù)器讀入類(lèi)并將它重創(chuàng )建為服務(wù)器端 Java 對象,修改它的成員值,然后返回它(使用 IIOP)作為方法的返回值。當接收到在遠程方法調用之后重創(chuàng )建的對象時(shí),我們看到它的成員確實(shí)已被服務(wù)器修改了。就是這么簡(jiǎn)單:在 IIOP 上進(jìn)行 Java 序列化。

第 4 部分:運行示例
請注意,我們這里所創(chuàng )建的示例必須在 IBM Developer Kit for Java technology,版本 1.3.1 或更高版本中運行。如果您寧愿使用 Sun JDK,請下載特定于 Sun 的源代碼,您應該在 Sun 1.4.0 JDK 或更高版本中運行它。這個(gè)源代碼包括一個(gè)解釋 IBM SDK 版本和 Sun JDK 版本之間的差異的 readme.txt 文件。如果您沒(méi)有 IBM Developer Kit for Java technology(而您又想要一個(gè)),請現在就下載一個(gè);它們是免費的。

這里是運行示例的步驟:

  1. 下載源文件。

  2. 輸入 javac *.java,javac 所有文件。

  3. 對 server 類(lèi)運行 rmic(帶 IIOP 標志):rmic -iiop Server。

  4. 啟動(dòng)服務(wù)器:在 Windows 中,請輸入 start java Server。

  5. 啟動(dòng)客戶(hù)機:在 Windows 中,請輸入 start java Client。


關(guān)于 RMI-IIOP 和 EJB 組件的一點(diǎn)注釋
EJB 2.0 規范指出,EJB 組件必須能在 RMI 和 RMI-IIOP 上運行。添加 RMI-IIOP 作為針對 EJB 組件的在線(xiàn)協(xié)議,已經(jīng)給將 J2EE 環(huán)境集成到現有的企業(yè)基礎設施(多數是 CORBA 相當密集的)帶來(lái)了很大幫助。但它也引起了一些問(wèn)題。

簡(jiǎn)單地說(shuō),就是將定制構建的組件和 EJB 組件集成起來(lái)要求您(開(kāi)發(fā)者)處理管道(plumbing),否則在 EJB 體系結構中它們對您來(lái)說(shuō)將很抽象。到目前為止,還沒(méi)有解決這個(gè)問(wèn)題的簡(jiǎn)單方案,可能永遠也不會(huì )有。隨著(zhù)諸如 Web 服務(wù)這樣的技術(shù)的發(fā)展,或許會(huì )出現解決方案,但目前尚未可知。

結束語(yǔ):此后該做什么
我希望本文已經(jīng)向您展示了構建和運行 RMI-IIOP 客戶(hù)機/服務(wù)器應用程序是多么容易。您可以修改一下我們使用的示例,用純 CORBA 替代客戶(hù)機或服務(wù)器,不過(guò)這樣做將除去您應用程序中的 Java 序列化。

如果您想在 CORBA 環(huán)境中使用 RMI-IIOP,那么看看 IDL 如何映射成 Java 以及 Java 如何映射成 IDL 是值得的。如果您想在不安全的環(huán)境(即不是您自己的 PC)中部署 RMI-IIOP,那么研究一下 CORBA 安全功能(如攔截器和 CORBA 安全模型)以及其它 CORBA 企業(yè)功能(如事務(wù)處理)是個(gè)不錯的主意。CORBA 所有的豐富功能在您運行 RMI-IIOP 時(shí)都可以使用。

 

參考資料


本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
邁向 Geronimo CORBA 互操作性
SOAP協(xié)議初級指南 (一)
Corba 學(xué)習筆記 (一)
Java 8 中所有的包列表及介紹
親身體驗CORBA: 使用java和C++混合編程
[Domino]如何用java遠程訪(fǎng)問(wèn)Domino郵箱數據
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

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