我想知道两者都可以
UnicastRemoteObject.exportObject(Remote,portNo) & LocateRegistry.createRegistry(portNo);
porNo是一样的吗?
我测试它有效,但是如果有任何并发症我会烦恼吗?
为什么exportObject需要指定一个对象才能工作?当我使用exportObject(Remote obj)时,它会抛出NullPointerException
。
答案 0 :(得分:2)
我想知道两者都可以
UnicastRemoteObject.exportObject(Remote,portNo) & LocateRegistry.createRegistry(portNo);
port不一样吗?
是的,除非您使用的是不相等的套接字工厂,否则您就是这样。如果出现问题,将抛出异常。
我测试它有效,但是如果有任何并发症我会担心吗?
完全没有,实际上这是一个好主意,节省了监听端口。您可以使用IANA保留的Registry.REGISTRY_PORT,因此也应该使用netadmins关闭任何参数。
为什么exportObject需要指定一个可以工作的对象?
因为它是一种静态方法。
当我使用exportObject(Remote obj)时,它会抛出一个 的StubNotFoundException。
因为您尚未生成存根。如果您使用的是> = 1.5,则不需要生成的存根,但您需要指定端口号。如果指定为零,则将获得系统分配的端口号,但如果您已导出远程对象(在本例中为Registry),则将再次共享其端口,除非您使用的是不相等的套接字工厂。