初学 Java RMI,很多地方都不理解,看到API 上对 Naming.list(registryURL) 的解释是
返回在注册表中绑定的名称所组成的数组。
以为 在注册表中一个名字可以对应多个对象。
实际上,在RMI注册表中,一个名字只能是对应一个对象,但是一个对象可以有多个名字。
如果试图将注册表中的对象绑定到已具有相关绑定的名称上,则抛出 AlreadyBoundException 异常。
bind()可以理解为普通绑定,让一个未使用的名字去映射一个对象;
rebind()是让一个已使用的名字去重新映射另外一个对象。
自然,一个端口可以监听多个对象,Naming .list("端口号或者对象名字")可以列出此时注册表中所有的对象名。也即是该端口监听的所有对象,因为一个服务器一般只声明一个端口来对应一个注册表。
之前理解错了……以为bind可以 给一个名字绑定多个对象……
很基础的东西……以上设定也非常符合常理,自己脑子不要转太多想歪了……也不要想太当然,走太多歪路!