2013-08-29 128 views
0

我想了解如何以及何時在一個非常簡單的應用程序中創建RMI連接。什麼時候創建了RMI連接?

server = new RemoteServer(); 
registry = LocateRegistry.createRegistry(PORT); 
registry.bind("Remote", server); 

客戶端部分是:

registry = LocateRegistry.getRegistry(HOST, PORT); 
remote = (IRemoteServer) registry.lookup("Remote"); 

讓我們假設遠程定義了一些方法doSomething()。現在,假設所有的設置都正確並且正常工作,我試圖瞭解何時完成TCP連接。

  • 是,當我打電話lookup()製成,具有每當我打電話remote.doSomething()同一連接得到重用的連接?如果我再次撥打lookup(),是否會創建第二個連接?
  • 或者每當我打電話給remote.doSomething()後又創建一個新連接,然後再拆除?

This question是有點關係,但它在談論多線程調用針對單個遠程對象的調用。)

回答

2

當RMI連接被創建

沒有單一的'RMI連接',所以這個問題已經不合格了。

的是()當我打電話查詢做了一個連接

是的,也許,見下文。

使用相同的連接重新使用每當我打電話remote.doSomething()?

如果遠程對象與註冊表位於同一主機:端口上,可能如下所示:否則肯定會有新的TCP連接。

如果我第二次調用lookup(),會創建第二個連接嗎?

可能,見下文。

還是每次我打電話remote.doSomething()後創建一個新的連接,然後拆除?

可能不是。的這個

無被指定,但太陽/ Oracle實施做客戶端連接池,各種RMI system properties控制下,特別是通過sun.rmi.transport.tcp.threadKeepAliveTime.已空閒的時間超過60秒的關閉默認連接。它曾經是15秒。

+0

now now see below below! –

相關問題