我正在虚拟机上运行RMI Registry(运行Windows XP),IP为192.168.133.2,尝试绑定一个运行在不同虚拟机上的RMI服务器(XP IP:192.168.133.3),使用以下代码:
Naming.rebind("//192.168.133.2/rmi.2", new RMI());
where
public class RMI extends UnicastRemoteObject
但是我收到了这个异常:
java.rmi.AccessException: Registry.Registry.rebind disallowed; origin /192.168.133.3 is non-local host
我发现RMI注册表不接受任何不在同一运行机器上的rmi服务器。但是如何让该注册表接受我的rmi服务器呢?
附注:我正在使用JBuilder X作为IDE。
我正在尝试实现一个移动代理,它将在一些rmi服务器上运行以执行一些工作,并将结果返回到起始站点,因此RMI服务器实现了托管此代理的环境,以执行其工作并将其发送到下一个站点,该站点将通过注册表定位。
bind/rebind/unbind
请求,但并没有要求被绑定的对象也必须在本地主机上运行。例如,一个程序可以在远程注册表中查找对象,并将它们绑定到本地注册表中;这样,本地注册表就会包含对在远程主机上运行的服务器的引用。 - user207421