>我在虚拟机(运行Windows XP)上运行RMI注册表,IP为:192.168.133.2并尝试绑定 RMI 服务器(在不同的虚拟机 XP IP 上运行:192.168.133.3)通过使用此代码:
Naming.rebind("//192.168.133.2/rmi.2", new RMI());
哪里
public class RMI extends UnicastRemoteObject
但我得到这个例外:
java.rmi.AccessException: Registry.Registry.rebind disallowed; origin /192.168.133.3 is non-local host
我认为RMI注册表不接受任何未在同一服务器上运行的rmi服务器RMI 注册表运行计算机。
但是如何使此注册表接受我的 RMI 服务器?
p.s:我正在使用JBuilder X作为IDE。
我正在尝试实现一个移动代理,它将在某些 rmi 服务器上运行以对它们执行一些工作并将结果返回到起始站,以便 RMI 服务器实现托管此代理的环境以完成其工作并将其发送到它将通过注册表找到的下一个站
尝试绑定 RMI 服务器(在不同的虚拟机 XP IP 上运行:192.168.133.3)
停在那里。你不能这么做。只能将 RMI 服务器绑定到与执行绑定的代理程序在同一主机中运行的注册表。
请注意,这并不一定意味着运行远程对象本身的主机相同。例如,客户端可以查找远程注册表并将检索到的存根绑定到本地注册表中。但是,您不能将任何内容绑定到远程注册表。
RMI不提供任何类型的"联合"或分布式命名服务。
RMI 的结构允许您在服务器上运行 RMI 注册表。 它托管可通过网络访问的服务,但服务在该服务器上本地运行。
所提供的服务必须在服务器上启动和"重新绑定",而不是在任何客户端系统上启动。 仅限本地地址。
然后,您的客户应该联系该服务器...