如何在Java中使用RMI

          遠(yuǎn)程方法調(diào)用(RMI)是java中最早的關(guān)于處理對(duì)象分布的機(jī)制,了解其工作原理為今后學(xué)習(xí)RMI-IIOP,XML-RPC以及SOAP等都有較大的幫助。
          簡(jiǎn)單歸納如下:
          1.RMI允許一個(gè)JVM實(shí)例中的所有對(duì)象調(diào)用另一個(gè)JVM實(shí)例中所有對(duì)象的方法;
          這兩個(gè)JVM可以運(yùn)行在同一臺(tái)機(jī)器的不同進(jìn)程上,也可以運(yùn)行在不同的機(jī)器上。
          2.可以被遠(yuǎn)程訪問的對(duì)象必須創(chuàng)建一個(gè)接口,并extends java.rmi.Remote接口;
          接口中定義的所有方法必須拋出java.rmi.RemoteException。
          3.可以被遠(yuǎn)程訪問的對(duì)象除了要實(shí)現(xiàn)該接口外,還要extends java.rmi.server.UnicastRemoteObject;
          4.使用rmic工具生成_Stub類和_Skel類;
          在cmd窗口中,輸入:rmic 編譯好的實(shí)現(xiàn)類名
          若出現(xiàn)Class Not Found錯(cuò),則檢查class路徑設(shè)置是否正確。
          這樣,客戶端實(shí)際是在對(duì)_Stub對(duì)象進(jìn)行操作,而不是對(duì)實(shí)際的遠(yuǎn)程對(duì)象操作。服務(wù)器端則用_Skel對(duì)象和實(shí)際的遠(yuǎn)程對(duì)象進(jìn)行通信。
          5.編寫服務(wù)器端應(yīng)用程序;
          需要用Naming.rebind()方法將注冊(cè)名與對(duì)象綁定在一起。
          6.編寫客戶端程序;
          首先要用Naming.lookup()方法搜索注冊(cè)名,之后cast成遠(yuǎn)程接口。
          這里,如果是在不同的機(jī)器上分別開發(fā)客戶端和服務(wù)器端的話,則需要將接口復(fù)制到兩邊。
          最后,就是象調(diào)用本地方法一樣,調(diào)用該遠(yuǎn)程接口的方法,實(shí)現(xiàn)分布計(jì)算的功能了。
          7.要運(yùn)行RMI的話,需要啟動(dòng)三個(gè)程序:
              7.1.在第一個(gè)cmd中,啟動(dòng)rmiregistry,注意要在遠(yuǎn)程實(shí)現(xiàn)類所在的目錄下運(yùn)行;
              7.2.在第二個(gè)cmd中,啟動(dòng)服務(wù)器端程序;
                  注意點(diǎn):a).java參數(shù)(-Djava.security.policy)中要指定策略文件名(包含路徑)
                                  b).路徑中若目錄名里含有空格,須將整個(gè)路徑用""包起來,否則會(huì)報(bào)Class Not Found錯(cuò)
                                  c).如果機(jī)器上安裝有防火墻軟件,可能會(huì)導(dǎo)致connect超時(shí),異常中斷,須關(guān)閉防火墻
              7.3.在第三個(gè)cmd中,啟動(dòng)客戶端程序;

           8.下面介紹如何在eclipse中運(yùn)行一個(gè)簡(jiǎn)單的RMI程序:
              8.1.先在eclipse里新建一個(gè)java項(xiàng)目,然后,創(chuàng)建RMI接口,實(shí)現(xiàn)類,服務(wù)器端程序,客戶端程序;
              8.2.打開cmd窗口,啟動(dòng)rmiregistry;
              8.3.在eclipse里,右鍵點(diǎn)擊服務(wù)器端程序,打開“運(yùn)行...”配置窗口,切換到“Arguments”,在“VM arguments”里輸入:-Djava.security.policy=xxxxxxx
              
              8.4.點(diǎn)擊“運(yùn)行”,在控制臺(tái)里可以看到服務(wù)器程序正確運(yùn)行;
              8.5.最后,右鍵點(diǎn)擊客戶端程序,運(yùn)行;

           

           

           

           

           

           

           

           

          posted on 2010-06-09 23:46 koradji 閱讀(995) 評(píng)論(0)  編輯  收藏 所屬分類: Web Development

          <2010年6月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          db2

          dos

          Groovy

          Hibernate

          java

          WAS

          web application

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 图木舒克市| 利辛县| 宁阳县| 明溪县| 华亭县| 松潘县| 肇东市| 陕西省| 宁城县| 泰和县| 乐业县| 祥云县| 陇南市| 敦煌市| 梁平县| 庄浪县| 腾冲县| 县级市| 长宁区| 建湖县| 无锡市| 房山区| 广宗县| 青河县| 威远县| 建湖县| 玉门市| 滕州市| 隆子县| 菏泽市| 伊宁市| 获嘉县| 阳原县| 新乡市| 宽甸| 锡林浩特市| 奈曼旗| 德阳市| 加查县| 湾仔区| 鄯善县|