快速业务通道

高影响力的Web层群集, 第二部分: 用JavaSpaces构建 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
模拟对同一个会话的请求(通过向第二个购 物车添加产品),那么我们将会看到第二个购物车立即“补充”了第一个购物车上 的货物。可以在任何数量的购物车上任意多次添加货物,模拟将收到的对同一会话的请求分 配给不同的服务器的情况,您会发现共享的会话信息一直保护一致。

虽然这种会话共享方法对于具有容错能力的负载平衡群集服务器是足够的,但是它仍然不 能满足我们的需要。实际上需要在发生共享内存写操作时通知可视化的购物车,这样它就可 以更新其可视化 GUI 了。这种要求看来比在大多数群集系统中使用的更严格。解决方案也需 要更多的带宽,因为每次共享内存写操作现在都会在网络上产生通知风暴。不管怎么说, JavaSpaces 再次迎接了挑战,可以对不同分布式应用程序的的不同需求进行调整。

使用远程事件进行会话状态改变通知

JSCart 需要随时可视化地反映共享会话的状态。为了满足这种特殊的要求, JSCart 实 例必须在会话状态改变时得到通知。这意味着在任何一个实例上发生共享内存写操作时,必 须通知所有 JSCart 实例。

我们的 CartSessionManager 类专门为此提供了一个 addDistributedWriteListener() 方法。 JSCart 调用这个方法以将自己注册为一个监听器。 JSCart 实现了 com.ibm.devworks.javaspace.DistributedWriteListener 接口,详见清单 4:

清单 4. 用于会话改变通知的 DistributedWriteListener 接口

public interface DistributedWriteListener extends java.util.EventListener {   public void sessionChanged(Object session); }

CartSessionManager 保证当共享会话信息被修改时调用 sessionChanged() 方法。这使 JSCart 可以用最新的会话数据更新其 GUI。

在内部, CartSessionManager 使用 JavaSpaces notify 操作实现事件通知。 JavaSpaces 使用 Jini 的远程事件通知机制(参阅 参考资料)以进行远程方法调用(RMI),以 在匹配特定模板的项写入 JavaSpaces 时回调监听的客户。在这之前,客户必须用 JavaSpaces notify() 方法注册一个远程监听器。可以在 CartSessionManager 类的 registerRemoteEvent() 方法中看到这段代码,如清单 5 所示:

清单 5. 注册 JavaSpaces 远程通知的 registerRemoteEvent() 方法

private boolean registerRemoteEvent(Configuration config) {     if ((spaceService == null) || (transactionService == null))       return false;     EventRegistration evtReg;     leaseMgr = new LeaseRenewalManager();     try {       Exporter exp = (Exporter) config.getEntry(       CONFIG_COMP,       "serverExporter", Exporter.class,       new net.jini.jeri.BasicJeriExporter(       net.jini.jeri.tcp.TcpServerEndpoint.getInstance(0),       new net.jini.jeri.BasicILFactory(),       false, true));       evtReg =        spaceService.notify( new SessionEntry(SESSION_KEY, null),       null, (RemoteEventListener)       exp.export(this),       /* LeaseTime is 3 minutes */   3 * 60 * 1000 ,       null);       leaseMgr.renewFor(evtReg.getLease(),       Lease.FOREVER, 3 * 60 * 1000, null);     } catch (Exception ex) {       ex.printStackTrace();       return false;     }     return true;   }

高影响力的Web层群集, 第二部分: 用JavaSpaces构建(8)

时间:2011-04-16 IBM Sing Li

租用和自修复的、长寿的网络

Jini 大量使用限期租约以

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号