2010-09-03 72 views
1

我失去了一些東西有關的區別rmi註冊表:確保有一個運行的最佳方式?

  1. 開始rmiregistry中之間在命令提示符(分開任何Java進程正在運行實現了RMI接口的服務器)
  2. 具有服務器調用LocateRegistry.getRegistry()
  3. 有服務器電話LocateRegistry.createRegistry(Registry.REGISTRY_PORT)

我只想我的服務器註冊其與註冊表的導出對象,創建一個,如果沒有一個已經運行。什麼是最好的方法來做到這一點?

回答

1

這就是我曾經這麼做的,不確定它是否是正確的方式:/。我還必須制定策略文件,所以如果這也給你帶來麻煩(安全管理器部分),你必須創建一個策略文件並使用它。

try 
      { 
       try 
       { 
        java.rmi.registry.LocateRegistry.createRegistry(1099); 
       } 

       catch (java.rmi.server.ExportException e) { /* */ } 

       System.setSecurityManager(new java.rmi.RMISecurityManager()); 
       Registry registry = LocateRegistry.getRegistry("127.0.0.1",1099); 
       registry.rebind(...); 
      } 

      catch (Exception e) { /* */ } 
    } 
2

舊線程,但...

man rmiregistry 

說:

用於 的java.rmi.registry.LocateRegistry類的方法得到註冊表上操作本地主機或本地主機和端口。

否則必須:

的java.rmi.Naming中的類的基於URL的方法操作上的註冊表,並可以用來查找一個遠程對象的任何主機上和本地主機

所以我想這是重要的區別。其他的事情是SecurityManager和策略。

+0

upvoting因爲你回答了這個問題,但是,是的,這個Q太老了,我根本不記得RMI,不能再對它進行評估。 – 2016-04-29 22:49:36