快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

JSCart 与 CartSessionManager 之间的分工是明确的。 JSCart 维护 GUI 并对所有需要 的会话数据使用 CartSessionManager 。 CartSessionManager 用 JavaSpaces 联网共享内 存实现了其 API -- 客户是看不到它的。这意味着 CartSessionManager 不知道数据是如何 包含在会话中的。会话细节对于 CartSessionManager 来说是不透明的。这使原子读-修改- 写循环变的实现变得有些困难了,因为:

只有 CartSessionManager 知道如何读和写共享内存

只有 JSCart 知道如何有效地修改会话

在代码中,读-修改-写是在一个名为 com.ibm.devworks.javaspace.PrepReadModifyWrite 的接口帮助下实现的。清单 2 显示了 这个接口的定义:

清单 2. PrepReadModifyWrite 接口

public interface PrepReadModifyWrite {   public void afterRead(Object readSession, Object token); }

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

时间:2011-04-16 IBM Sing Li

在这个接口中只有一个方法,称为 afterRead() 。

当 JSCart 需要执行读-修改-写操作时,它调用 CartSessionManager 对象的 readModifyWrite() 方法,传递一个实现了 PrepReadModifyWrite 接口的对象(在我们的例 子里,就是 JSCart 类本身)。

当用户用 GUI 向购物车中添加货物时,由 JSCart 发出这个调用。它是在 itemOrdered () 方法中处理的,如清单 3 所示:

清单 3. itemOrdered() 方法中的读-修改-写

public void itemOrdered(OrderEvent ev) {     System.out.println("JSCart received ordered event - " + ev);     boolean success = sessionMgr.readModifyWrite(this,     (Object) new OrderEvent(ev.getDesc(), ev.getPrice())) ;   }

这使事务中的 CartSessionManager 可以自动:

执行 JavaSpaces take 操作

用 PrepReadModifyWrite 接口的 afterRead() 方法向 JSCart 返回不透明的会话以进行 修改

用修改后的数据执行 JavaSpaces write 操作

seed 空间的需要

在 JavaSpaces 的当前规范中,没有已知的一组 n 个客户可靠地合作以在空间中 “seed”共享 singleton 项的一般性方法。这就是为什么会有一个用 SessionSeeder 类实现的会话 seed 实用程序的原因。这个工具在任何客户启动之前将初始 会话项写入空间。在概念上,我们可以在联网的内存初始化以共享或者映射要共享的区域时 看到这一点。

用分布式共享内存测试 JSCart

我们可以用以下步骤试一试这个版本的 JSCart :

1.在 code\jini2 目录中启动 Jini 和 JavaSpaces 环境,在 code\jini2 目录中,键入 startup(保证遵循每一个目录中的所有 README.TXT 中的指示来设置系统)。

2.用 scripts 目录中的 seedspc.bat 批处理文件运行会话 seed 实用程序。在代码目录中,键入 scripts\seedspc(参阅侧栏“ seed 空间的需要”有关 seed 空间的更多信息)。

3.在 scripts 目录中,运行 runcart.bat 批处理文件以执行 JSCart 的两个或者更多实例,在 code 目录中,键入 scripts\runcart。

如果需要从源代码编译为二进制文件,在 code\src 目录中使用 compile.bat 批处理文件。

JSCart 只使用了一个共享会话以使它保持简单和容易观察。在生产方案中,通常都有多 个会话项,每一个会话项可以独立修改。还会需要一个单独的共享项以保持所有会话 ID。

现在试着在第一个购物车中添加货物。这相当于让添加货物请求进入第一台服务器。注意 两个购物车看上去不同步,类似于图 5:

图 5. 显示的 JavaSpaces 购物车看上去不同步

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

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

时间:2011-04-16 IBM Sing Li

不过,如果我们现在在第二个服务器/购物车上

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