2013-04-14 99 views
0

我目前正在練習Java中的RMI實現。其中一個要求是創建一個擴展UnicastRemoteObject的類,該類包含可以遠程調用的函數。Java RMI的UnicastRemoteObject

我想知道擴展UnicastRemoteObject的類是否被所有連接的客戶端共享。我分享的意思是,從擴展UnicastRemoteObject的類創建的實例對象是否由連接的客戶端併發使用?

回答

1

這取決於你如何使用它。通常情況下,如果這是唯一的遠程對象,那麼您將在RMI註冊表中註冊一個實例,然後客戶端會查找並調用其中的方法,並且它們都共享相同的實例。但是,如果你看看this question and answer,你會看到如何爲每個客戶分配一個,如果這是你的要求。

+0

有趣的是,我記得綁定註冊表中的對象的名稱。所以如果我沒有弄錯,一個註冊表就是遠程對象的一個​​實例。所以基本上如果有2個客戶端連接在同一個註冊表上,那意味着他們共享相同的遠程對象。我的比喻是對的嗎? – it2051229

+0

正如我剛剛回答的,'他們都共享相同的實例'。 – EJP

+0

是的,你做了,只是確認,如果我理解你的權利。一個後續問題,如果2個客戶端連接在同一個註冊表上並且他們共享相同的對象,他們是否同時使用該對象(併發)?或者它們是由一些不允許同時使用函數(或對象)的機制來控制的? – it2051229