快速业务通道

分布式对话服务器的管理 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
调用Mnemosyne的take()方法,Mnemosyne将象有read事件发生那样退还Memory对象,同时从其存贮对象库中删除该Memory对象。同时,向其所有TakeRemoteEventListeners发送TakeRemoteEvent事件,通知所有的远程Mnemosynes该Memory对象已经被删除了。

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

时间:2010-12-26

建立对话服务器

上面我们已经讨论了如何在多服务器上维护对话存贮库,下面我们将讨论如何建立对话服务器。在初始化过程中,对话服务器完成下列任务:

创建本地Mnemosyne对象。

把本地Mnemosyne绑定到RMI。

把本地Mnemosyne与其他的远程Mnemosyne进行同步。

首先,对话服务器将获得Mnemosyne对象的一个实例,该实例被绑定到对话服务器的本地IP上。

protected void bindMnemosyne() { file://得到Mnemosyne Mnemosyne Mnemosyne = null; try { Mnemosyne = MnemosyneFactory.getMnemosyne(); } catch(RemoteException remoteException) { System.out.println("Internal error:"); System.out.println("Can''t create a Mnemosyne"); System.exit(1); } // 把Mnemosyne绑定到MnemosyneImpl try { String rmiURL = "//" + _localIP + "/MnemosyneImpl"; Naming.rebind(rmiURL, Mnemosyne); } catch(ArrayIndexOutOfBoundsException ArrayIndexOutOfBoundsException) { throw new IllegalArgumentException("LocalIP is invalid"); } catch(MalformedURLException malformedURLException) { throw new IllegalArgumentException("LocalIP is invalid"); } catch(RemoteException remoteException) { System.out.println("Internal error:"); System.out.println("Can''t rebind a Mnemosyne to MnemosyneImpl"); System.exit(1); } }

通过把本地Mnemosyne上一系列代表RMI名字符号的URL赋予远程对话服务器,就能引发同步操作,这些URL存贮在一个被称作rmiURL的字符串数组中。在SessionServer的符号中,URL是作为参数从命令行命令中获得的,但它可以来自其他渠道:

protected void synchronizeMnemosyne() { file://获得本地Mnemosyne Mnemosyne localMnemosyne = null; try { localMnemosyne = (Mnemosyne) Naming.lookup(_localIP); } catch(Exception exception) { System.out.println("Internal error:"); System.out.println("Can''t lookup local MnemosyneImpl"); System.exit(1); } file://获得同步用的远程Mnemosynes Vector remoteMnemosynes = new Vector(); // _rmiURLS对象是代表需要进行同步的远程服务器的字符串数组 for(int index = 1;index < _rmiURLS.length;index++) { try { remoteMnemosynes.add(Naming.lookup(_rmiURLS[index])); } catch(Exception exception) { } } file:// 同步 try { if(remoteMnemosynes.size() > 1) localMnemosyne.synchronize(remoteMnemosynes); } catch(Exception exception) { System.out.println("Internal error:"); System.out.println("Can''t synchronize local MnemosyneImpl"); System.exit(1); } }

分布式对话服务器的管理(4)

时间:2010-12-26

远程访问Mnemosyne

下面我们来讨论在servlet服务器上访问远程Mnemosyne的方法。要在无需特定服务器在线的情况下加载一个包含对话信息的Mnemosyne,需要创建一个FailoverHandler的实例,FailoverHandler利用JDK 1.3中的Proxy API处理对话服务器当机的问题。FailoverHandler把一个代表访问远程对话服务器的RMI URL的字符串数组作为参数,然后,从Proxy类中获取Mnemosyne实例

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号