分布式对话服务器的管理 - 编程入门网
:// MatchAllMemory对象是一个有效类
file://对任何二个Memory对象进行比较
MatchAllMemory matchAllMemory = new MatchAllMemory();
file:// 从Primary中获得所有Memory
Mnemosyne Mnemosyne = (Mnemosyne) Mnemosynes.firstElement();
Vector allMemories = Mnemosyne.readAll(matchAllMemory,null);
commonContext.silentWriteAll(allMemories);
// 注册进行发送、接收事件
Enumeration enumeration = Mnemosynes.elements();
while(enumeration.hasMoreElements())
{
Mnemosyne nextMnemosyne = (Mnemosyne) enumeration.nextElement();
file://注册接收通知
nextMnemosyne.addTakeRemoteEventListener(this, matchAllMemory);
nextMnemosyne.addWriteRemoteEventListener(this, matchAllMemory);
file:// 注册发送通知
addTakeRemoteEventListener(nextMnemosyne, matchAllMemory);
addWriteRemoteEventListener(nextMnemosyne, matchAllMemory);
}
// ...
}
本地的Mnemosyne对象读取Vector中第一个Mnemosyne对象的所有Memory对象,并采用“silent”方法将它们写到其CommonContext对象中。然后,本地Mnemosyne将自己作为TakeRemoteEventListener和WriteRemoteListener添加到所有的远程Mnemosyne中,这就意味着任何对远程Mnemosynes的take或read操作都将调用本地Mnemosyne的notify()方法。最后,本地Mnemosyne将远程Mnemosyne添加到其TakeRemoteEventListeners和WriteRemoteListeners队列中,确保对本地Mnemosyne的write或take操作都会通知远程Mnemosyne。 当添加或删除一个Memory对象时,经过同步的本地Mnemosyne对象需要对所有的Mnemosyne进行更新,可以通过notify()方法来完成这一任务。无论是发生write或take事件,Mnemosyne都会针对发生的事件调用适当的监听者的notify()方法。在synchronize()方法中,我们把本地Mnemosyne注册为所有远程Mnemosyne的take和write事件的监听者,一旦远程Mnemosyne上有take和write事件发生,就会调用本地 Mnemosyne的notify()方法。然后,本地Mnemosyne必须对事件作出反应。下面是Mnemosyne如何与远程Mnemosyne进行同步的例子:
现在已经创建了一个控制所有memory对象的Mnemosyne,它自动与远程Mnemosyne保持同步,如果任何一个远程Mnemosynes得到或失去一个Memory对象时,都可以使它保持最新的状态。 要通过Mnemosyne管理HTTP对话,servlet需要创建HttpSession的实例(从HttpServletRequest中使用getSession()),在实现Memory对象的类中封装对话,并调用Mnemosyne对象的write()方法把封装类写到一个Mnemosyne中。 通过调用write()方法,封装着对话的Memory对象沿着网络传送给Mnemosyne,并通知远程机器。当对象被写到Mnemosyne时,WriteRemoteEvent被发送给在Mnemosyne上注册的所有WriteRemoteEventListeners,这样,所有其他的Mnemosynes就能将新的对象作为Mnemosynes添加到它们的对话信息存贮库中。 要对存贮的对话进行查询,servlet调用read()方法查找包含对话的Memory对象,如果Mnemosyne找到了要查找的对象,则该对象通过RMI返回到servlet服务器。 最后,要删除对话,servlet就会 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |