2010-09-03 48 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