RMI - 我做对了吗?

时间:2011-01-17 17:52:21

标签: java rmi

有人可以验证我是否正确理解了Java RMI吗?

如果我有:

public class Server extends UnicastRemoteObject 
{
    public Server() throws RemoteException
    {
        super();
        if (System.getSecurityManager() == null)
        {
            System.setSecurityManager(new RMISecurityManager());
        }
        try
        {
            Naming.rebind("rmi://someAddress/someName" , this);
        }
        catch (MalformedURLException ex)
        {
        }
        catch (ConnectException ex)
        {
        }

/* do sometnig else there */
   }
}

这意味着如果有100个客户端连接,RMI会创建100个这个服务器的副本作为线程来方便那些客户端(没有我的进一步干预)?

2 个答案:

答案 0 :(得分:1)

不,如果连接了100个客户端,RMI注册表将管理许多单独的线程,这些线程全部针对Server类的单个实例执行。

最有可能的是,每个客户端连接都会产生一个新线程,可能是多个线程,但永远不会创建Server的新实例。

答案 1 :(得分:0)

  

这意味着如果有100个客户端连接,RMI会创建100个这个服务器的副本作为线程来方便那些客户端(没有我的进一步干预)?

没有'创建此服务器的100个副本作为线程'。 创建服务器的任何实例,RMI创建尽可能多的线程来调用服务器的方法。服务器中所需的任何同步都取决于您。