在学习RMI时(首先是Java)dudes使用
Naming.rebind(name, object)
但是网络上的其他人(oracle)使用
Registry registry = LocateRegistry.getRegistry();
registry.rebind(name, object);
我知道hf java有点旧,但我没有看到Naming类已被弃用。
那么,那有什么不同呢?
答案 0 :(得分:7)
之间的区别[有什么区别]
java.rmi.Naming
和java.rmi.registry.LocateRegistry
不同之处在于,name
的{{1}}字段为parsed as an URL而Naming.rebind()
为"name to associate with the remote reference"。 Registry.rebind()
调用假定注册表位于默认端口的本地主机上,而LocateRegistry.getRegistry()
允许您指定要使用的注册表。
在Java 1.6下Naming.rebind()
将Naming.rebind()
解析为URL,并使用注册表的主机/端口调用name
。这会调用Naming.getRegistry()
。
LocateRegistry.getRegistry(host, port)
答案 1 :(得分:6)
如果您查看源代码没有区别,那么您将看到:
public static void rebind(String name, Remote obj)
throws RemoteException, java.net.MalformedURLException {
ParsedNamingURL parsed = parseURL(name);
Registry registry = getRegistry(parsed);
if (obj == null)
throw new NullPointerException("cannot bind to null");
registry.rebind(parsed.name, obj);
}
免责声明:从JDK获取的代码不是我自己的impl。
类似问题here