1 / 2
文档名称:

分布式对话服务器的管理(3)(2).txt

格式:txt   页数:2
下载后只包含 1 个 TXT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

分布式对话服务器的管理(3)(2).txt

上传人:管理资源吧 2011/9/15 文件大小:0 KB

下载得到文件列表

分布式对话服务器的管理(3)(2).txt

文档介绍

文档介绍:作者:运气
email: webmaster@
日期:7/4/2001 1:41:45 PM
当添加或删除一个Memory对象时,经过同步的本地Mnemosyne对象需要对所有的Mnemosyne进行更新,可以通过notify()方法来完成这一任务。无论是发生write或take事件,Mnemosyne都会针对发生的事件调用适当的监听者的notify()方法。在synchronize()方法中,我们把本地Mnemosyne注册为所有远程Mnemosyne的take和write事件的监听者,一旦远程Mnemosyne上有take和write事件发生,就会调用本地 Mnemosyne的notify()方法。然后,本地Mnemosyne必须对事件作出反应。下面是Mnemosyne如何与远程Mnemosyne进行同步的例子:
public void notify(RemoteEvent remoteEvent) throws RemoteException
{
// 回写被写的内存,但无需通知所有的Mnemosyne
if(remoteEvent instanceof WriteRemoteEvent)
{
WriteRemoteEvent wre = (WriteRemoteEvent) remoteEvent;
(());
}
file:// 取被写的Memory,但无需通知所有的Mnemosyne
if(remoteEvent instanceof TakeRemoteEvent)
{
TakeRemoteEvent tre = (TakeRemoteEvent) remoteEvent;
(());
}
}
现在已经创建了一个控制所有memory对象的Mnemosyne,它自动与远程Mnemosyne保持同步,如果任何一个远程Mnemosynes得到或失去一个Memory对象时,都可以使它保持最新的状态。
要通过Mnemosyne管理HTTP对话,servlet需要创建HttpSession的实例(从HttpServletRequest中使用getSession()),在实现Memory对象的类中封装对话,并调用Mnemosyne对象的write()方法把封装类写到一个Mnemosyne中。
通过调用write()方法,封装着对话的Memory对象沿着网络传送给Mnemosyne,并通知远程机器。当对象被写到Mnemosyne时,WriteRemoteEvent被发送给在Mnemosyne上注册的所有Write