我遗漏了
之间的区别LocateRegistry.getRegistry()
LocateRegistry.createRegistry(Registry.REGISTRY_PORT)
我只是希望我的服务器使用注册表注册其导出的对象,如果没有一个已经运行,则创建一个。最好的方法是什么?
答案 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) { /* */ }
}