2011-08-12 63 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