云自無心水自閑

          天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
          posts - 288, comments - 524, trackbacks - 0, articles - 6
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
          今天一個項目要使用RMI,于是開始寫了一個小示例運行一下。
          1. 寫接口繼承Remote,并給出要實現的方法
          2. 寫一個方法繼承UnicastRemoteObject,并實現上面的接口
          3. 寫Server,進行Naming.rebind
          4. 運行rmic(在JDK的bin目錄,而不是在JDK\jre\bin目錄下)生成Stub。
          這中間有一個小麻煩,舉例來說如果第2步中的類名是TestObj,放在com.test包中。
          那么典型的目錄結構是WEB-INF\classes\com\test目錄下有一個TestObj.class
          這時候需要在WEB-INF\classes目錄下運行命令 rmic com.test.TestObj
          注意:如何運行的路徑和方式不正確的話, 會出現找不到TestObj.class的錯誤.
          5. 寫Client端代碼,Naming.lookup. 然后調用遠程方法。
          6. 運行start rmiregistry
          7. java com.test.TestObjServer, 這時候出問題了,總是報告說找不到TestObj_Stub.class,奇怪啊,這個Class明明很安靜地躺在目錄下啊?
          經過一番查找,最后目標鎖定在java的版本上,因為機器安裝了Oracle,而Oracle自帶了JDK,而且版本較低,在環境變量中調換了JDK使用的順序,重新運行命令。
          成功了!
          8. 生成policy.txt
          9. java -Djava.security.policy=policy.txt TestObjClient
          得到正確結果!

          注意點:
          啟動server時如果遇到找不到stub問題,原因是rmiregistry找不到stub,而不是java com.Server找不到stub,解決方法,在stub的類同一個目錄下啟動rmiregistry.

          主站蜘蛛池模板: 元朗区| 南江县| 七台河市| 和平区| 茌平县| 贵港市| 广丰县| 小金县| 格尔木市| 郸城县| 手机| 嘉荫县| 长宁县| 八宿县| 丹凤县| 紫阳县| 康定县| 平罗县| 广元市| 那曲县| 台山市| 彭泽县| 开化县| 阳泉市| 舟曲县| 桃源县| 方山县| 天等县| 安图县| 屏山县| 奉贤区| 彭阳县| 东海县| 木兰县| 华坪县| 屏山县| 石楼县| 云南省| 和政县| 油尖旺区| 来凤县|