java RMI-多个主机使用相同的名称注册一个对象

java RMI-多个主机使用相同的名称注册一个对象,java,linux,eclipse,networking,rmi,Java,Linux,Eclipse,Networking,Rmi,我可以注册来自不同机器的同名对象吗? 例如:假设我们有一个实现远程接口的类X。然后,我们有一个类服务器,它接受一个新的X对象,并在注册中心注册这个名为“name”的对象。然后我们有另一台具有相同类并做相同事情的机器。我们可以有多台机器作为服务器运行。在此配置中,所有计算机都从不同的IP注册其对象X,但所有对象都使用相同的名称注册。这有可能吗?如果一个客户端使用不同的ip和相同的对象名进行调用查找,是否有问题?只要服务器有各自的RMI注册表,它们就可以使用相同的名称进行绑定。如果它们共享相同的RM

我可以注册来自不同机器的同名对象吗?
例如:假设我们有一个实现远程接口的类X。然后,我们有一个类服务器,它接受一个新的X对象,并在注册中心注册这个名为“name”的对象。然后我们有另一台具有相同类并做相同事情的机器。我们可以有多台机器作为服务器运行。在此配置中,所有计算机都从不同的IP注册其对象X,但所有对象都使用相同的名称注册。这有可能吗?如果一个客户端使用不同的ip和相同的对象名进行调用查找,是否有问题?

只要服务器有各自的RMI注册表,它们就可以使用相同的名称进行绑定。如果它们共享相同的RMI注册表,则无法使用相同的名称绑定对象

您描述的情况或多或少是不可能的。实际上,每个服务器都必须有自己的RMI注册表,这样就不会产生歧义。如果你能找到一种方法在同一个注册表中注册来自不同服务器的对象(虽然有一种方法,但很少有人知道或使用),显然它们都必须使用不同的绑定名。

你能参考一下你所说的关于这个案例的一些信息来源(不同的服务器使用同一个注册表)吗?这很简单。RMI注册表将不接受绑定/重新绑定/取消绑定,本地主机除外。但是,绑定/解除绑定的对象不必位于本地主机上。因此,如果您有RMI注册表,同一主机上可以查找其他主机的客户端程序可以将每个查找结果绑定到自己的注册表中。其他客户端只需要查看该注册表:事实上,它们根本不需要知道实际的远程对象在哪里。每个导出远程对象的主机仍然需要一个注册表:额外的注册表和绑定客户机是顶部的一层薄薄的额外层。好的,我相信我理解这一点。我的项目基本上是对等方之间的通信(因此我在每台机器上都有一个服务器,可能还有一个客户机)。我的第一个想法是,每个对等方启动自己的RMI注册表并在那里绑定一个对象(为了简单起见,使用相同的名称),但有人告诉我,只有一个RMI注册表是个好主意。正如我现在看到的,这是不可能的。正如你告诉我的,我需要一个Rmi注册表,每台机器和另一个中央。这是正确的。你被误导了。但是,如果您有可用的LDAP服务器,则可以通过JDNI使用该服务器而不是RMI注册表,并且您只需要一个。