云自無心水自閑

          天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
          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.

          主站蜘蛛池模板: 揭西县| 华容县| 土默特左旗| 莆田市| 石泉县| 新宁县| 辽中县| 二连浩特市| 永平县| 定远县| 高陵县| 青海省| 新巴尔虎右旗| 呈贡县| 乡城县| 呼图壁县| 玛纳斯县| 内江市| 大荔县| 田林县| 乐都县| 佛冈县| 钟山县| 灵丘县| 垣曲县| 绵阳市| 昌图县| 绿春县| 株洲县| 兴和县| 大英县| 涞水县| 武冈市| 洛隆县| 辽源市| 固镇县| 崇州市| 德令哈市| 克东县| 乐陵市| 崇文区|