2011-01-07 142 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