java rmi概念

时间:2011-04-17 08:30:24

标签: java chat rmi

我正在尝试实现一个简单的聊天应用程序,它通过中央服务器与其他客户端连接客户端,以便他们可以交换消息和文件。我还需要实现一个通知框架。例如,如果用户签名成功,或者他的好友登录,他会收到通知。 现在在RMI世界中,这是如何实现的? 我想有一个远程对象“连接类”,客户端从中调用方法,如“登录”,“断开连接”等... 至于通知框架类,它们也必须是远程的吗?或者他们可以躺在服务器上?  谢谢

1 个答案:

答案 0 :(得分:1)

远程系统之间的事件消息传递有点棘手。这是必须发生的事情:

  • 客户端必须注册对服务器端触发的事件的兴趣。要注册,客户端必须远程可用于事件源对象。

  • 为了能够注册,客户端必须找到服务器开头,因此服务器对象必须远程可供客户端使用。

是的,对吗?这就是实现远程事件处理的简单pattern。 几个星期前,我开始了一个沿着这条路走下去的教程 - 就在这里,我希望在本周末之前添加一些东西。唉,租金的需要受到了干扰,我无法像我想的那样尽快加入。 但是,如果您不能等待,那就是关键:必须远程提供双方才能使邮件系统正常工作。

该服务器以及客户端必须是远程对象。

让所有客户端实现远程接口。

RemoteClientIfc extends Remote {
    void inform();
}

//have a remote method register() on the *Server* object which accepts RemoteClientIfc.
//c'd be something like this...
register(RemoteClientIfc client){
    arrayListofClients.add(client);
}

//So client will do a look up on the remote server object and register itself.
remoteObj.register(clientInstance);

//In the remote server you
//can probably have another method to send notifications to the client.
//Run through the ArrayList and call 
//inform() on each of them.
//Thus the client will receive notification.
tellClients(){
    Iterator i = ....
    while (i.hasNext()){
        ((RemoteClientIfc).i.next()).inform();
    }
}