2011-08-12 37 views
1

我不知道可以同时RMI exportObject(Remote obj,PORT); createRegistry(PORT);

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

色情是一样的吗?

我测试它的工作原理,但如果有任何并发​​症,我是worrid?

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

回答

2

我不知道可以同时

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

PORTNO是一样的吗?

是的,除非你使用不相等的插座工厂,你不是。如果出现问题,则会抛出异常。

我测试它的工作原理,但我是worrid如果有任何并发​​症?

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

为什么exportObject需要指定一个对象来工作?

因为它是一种静态方法。

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

因为您还没有生成存根。如果使用> = 1.5,则不需要生成的存根,但您需要指定端口号。如果你指定零,你会得到一个系统分配的端口号,但是如果你已经导出了一个远程对象,在这种情况下是注册表,你将再次共享它的端口,除非你使用的是不相等的套接字工厂。

+0

小心定义不相等的套接字工厂?对不起这种套接字和RMI新的。我使用1.6,我得到NullPointException。 – seesee

+0

@seesee一个NullPointerException意味着某些东西没有被初始化。我会建议调试该代码并试图找出哪些变量未初始化。 –

+0

@seesee不相等的套接字工厂是套接字工厂,与Java中的其他地方一样,sf1.equals(sf2)返回false。 – EJP