2011-01-07 180 views
0

我正在開發一個使用rmi的應用程序,它允許客戶端登錄,執行一些任務並註銷。我知道每個客戶端在服務器上調用一個方法時都被認爲是一個線程,但是,所有客戶端的線程都會調用服務器上創建的同一個對象。所以現在,我想要爲每個客戶端登錄成功創建一個新線程(並且只有一個客戶端使用的新對象也被綁定),線程在客戶端註銷時終止。因此,每個客戶端都有自己的服務器對象。RMI-在服務器上創建線程來服務客戶端

非常感謝。

乾杯

回答

-1

聽起來很複雜。

對於每個連接的客戶端,您將獲得一個新線程,並在客戶端斷開連接時終止。你在登錄後計劃線程將做什麼,第一個線程不能?

如果您想爲每個客戶端創建一個對象,則可以使用ThreadLocal爲每個線程(每個客戶端)創建一個對象。

2

我知道,每個客戶端被視爲 作爲一個線程時,它調用一個方法 服務器

這是不正確的。客戶端和服務器線程之間的關係在RMI中未定義。

無論如何你不需要每個客戶端的線程。每個客戶需要一個遠程對象。這是會話模式的工作:

public interface Login extends Remote 
{ 
    Session login(String credentials) throws RemoteException; 
} 

public interface Session extends Remote 
{ 
    // Your API here 
} 

讓您登錄實現對象返回一個新的Session對象的實現爲每個客戶端。

+0

會話模式是一個非常好的主意。我會試試看。謝謝。 – 2011-01-12 11:45:25