rmi注册表:确保有一个运行的最佳方法?

时间:2010-09-03 21:25:25

标签: java rmi

我遗漏了

之间的区别
  1. 在命令提示符下启动rmiregistry(与运行实现RMI接口的服务器的Java进程分开)
  2. 让服务器调用LocateRegistry.getRegistry()
  3. 让服务器调用LocateRegistry.createRegistry(Registry.REGISTRY_PORT)
  4. 我只是希望我的服务器使用注册表注册其导出的对象,如果没有一个已经运行,则创建一个。最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

旧帖但......

man rmiregistry

表示:

  

java.rmi.registry.LocateRegistry类的方法用于   获取在本地主机或本地主机和端口上运行的注册表。

否则你有:

  

java.rmi.Naming类的基于URL的方法在注册表上运行,可用于在任何主机和本地主机上查找远程对象

所以我猜这是重要的区别。其他的是SecurityManager和策略。

答案 1 :(得分: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) {   /*  */  }
    }