快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
的ID,则此方法返回的值为真。 */ public boolean equalsMemory(Memory m) { return (m instanceof SessionWrapper && _id != null && _id.equals(((SessionWrapper)m)._id)); } /** * 得到HttpSession的信息。 */ public HttpSession getSession() { return _sess; } }

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

时间:2010-12-26

SessionWrapper类执行了Memory的界面,因此,HttpSession对象的ID可以与远程对话的ID进行比较。

最后需要创建read()、write()和delete(),以对远程对话进行管理。我们向SessionManager类添加三个静态类:

/** * 从在初始化时建立的Mnemosyne中得到HttpSession信息。 */ public static HttpSession getSession(String id) throws RemoteException { try { SessionWrapper result = (SessionWrapper)_Mnemosyne.read(new SessionWrapper(id), null); return result.getSession(); } catch (TransactionException ex) { // 由于没有处理事物,因此不会有事务意外被放弃。 ex.printStackTrace(); } return null; } /** * 在初始化时指定的Mnemosyne中保存对话信息。 */ public static void saveSession(HttpSession sess) throws RemoteException { try { _Mnemosyne.write(new SessionWrapper(sess), null); } catch (TransactionException ex) { file://由于没有处理事物,因此不会有事务意外被放弃。 ex.printStackTrace(); } } /** * 从在初始化时指定的Mnemosyne中删除一个对话。 */ public static void removeSession(String id) throws RemoteException { try { _Mnemosyne.take(new SessionWrapper(id), null); } catch (TransactionException ex) { // /由于没有处理事物,因此不会有事务意外被放弃。 ex.printStackTrace(); } }

在servlet中,可以以如下方式管理对话:

public void init(ServletConfig conf) throws ServletException { // 调用一个方法得到指示对话服务器位置的RMI URL清单 // 例如://server1.foo.com/MnemosyneImpl, //server2.foo.com/MnemosyneImpl,等 String[] urls = getURLs(conf); // Method to get the URLs from properties for the session servers SessionManager.initializeMnemosyne(urls) } public void doGet(HttpServletRequest req, HttpServletResponse rsp) throws IOException { file:// 得到存贮在cookie中的对话,仅仅是为了得到其ID。 HttpSession baseSess = req.getSession() file://根据得到的ID,从Mnemosyne中得到真正的对话 HttpSession realSess = SessionManager.getSession(base.getId()); SessionManager.saveSession(realSess); }

结论

尽管这篇文章讨论了一个分布式对话管理的例子,但我们可以将这一技术用于管理必须容忍任一节点出错的分布式内存管理系统中。Mnemosyne还可以用在成员不断加入和离开的P2P应用中。通过使用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号