RMI exportObject(Remote obj,PORT); createRegistry(PORT);

时间:2011-08-12 13:47:40

标签: java rmi

我想知道两者都可以

UnicastRemoteObject.exportObject(Remote,portNo) & LocateRegistry.createRegistry(portNo);

porNo是一样的吗?

我测试它有效,但是如果有任何并发​​症我会烦恼吗?

为什么exportObject需要指定一个对象才能工作?当我使用exportObject(Remote obj)时,它会抛出NullPointerException

1 个答案:

答案 0 :(得分:2)

  

我想知道两者都可以

UnicastRemoteObject.exportObject(Remote,portNo) &
LocateRegistry.createRegistry(portNo);
     

port不一样吗?

是的,除非您使用的是不相等的套接字工厂,否则您就是这样。如果出现问题,将抛出异常。

  

我测试它有效,但是如果有任何并发​​症我会担心吗?

完全没有,实际上这是一个好主意,节省了监听端口。您可以使用IANA保留的Registry.REGISTRY_PORT,因此也应该使用netadmins关闭任何参数。

  

为什么exportObject需要指定一个可以工作的对象?

因为它是一种静态方法。

  

当我使用exportObject(Remote obj)时,它会抛出一个   的StubNotFoundException。

因为您尚未生成存根。如果您使用的是> = 1.5,则不需要生成的存根,但您需要指定端口号。如果指定为零,则将获得系统分配的端口号,但如果您已导出远程对象(在本例中为Registry),则将再次共享其端口,除非您使用的是不相等的套接字工厂。