在研究RMI时(首先是Java)老兄使用
Naming.rebind(name, object)
Run Code Online (Sandbox Code Playgroud)
但是网络上的其他人(oracle)使用
Registry registry = LocateRegistry.getRegistry();
registry.rebind(name, object);
Run Code Online (Sandbox Code Playgroud)
我知道hf java有点旧,但我没有看到Naming类已被弃用.
那么,那有什么区别呢?
[什么是]
java.rmi.Naming和之间的区别java.rmi.registry.LocateRegistry
不同之处在于,name字段to Naming.rebind()被解析为URL,而" Registry.rebind()是与远程引用关联的名称".该LocateRegistry.getRegistry()调用假定注册表位于默认端口的本地主机上,而Naming.rebind()允许您指定要使用的注册表.
在Java 1.6下,Naming.rebind()将其解析name为URL并Naming.getRegistry()使用注册表的主机/端口进行调用.那叫LocateRegistry.getRegistry(host, port).
public static void rebind(String name, Remote obj) throws RemoteException, MalformedURLException
ParsedNamingURL parsed = parseURL(name);
Registry registry = getRegistry(parsed);
if (obj == null)
throw new NullPointerException("cannot bind to null");
registry.rebind(parsed.name, obj);
}
...
private static Registry getRegistry(ParsedNamingURL parsed) throws RemoteException {
return LocateRegistry.getRegistry(parsed.host, parsed.port);
}
Run Code Online (Sandbox Code Playgroud)
如果您查看源代码没有区别,那么您将看到:
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);
}
Run Code Online (Sandbox Code Playgroud)
免责声明:从JDK获取的代码不是我自己的impl.
类似的问题在这里
| 归档时间: |
|
| 查看次数: |
8591 次 |
| 最近记录: |