高影响力的Web层群集,第一部分: 利用JavaGroups扩展 - 编程入门网
的转发。 OrderListener 接口用于每当一个 Buy 按钮被点击时转发一个来自 CatalogUI 组件的 OrderEvent。图 9 显示了事件转发动作:
图 9. JGCart 中的事件流 在图 8 中 GUI 的下半部分有一个 OrderList 组件。该组件是一个 JPanel, 其中带有 一个 受管JTable ,这个JTable在任何时候都会显示购物车的内容。受管 JTable 有一个定 制的模型 (包含显示的数据),就像由我们的 OrderTableModel 类实现的一样。该定制模型 确保我们在会话中――在 CartState 类的一个实例中――维护的状态与受管 JTable 中显示 的状态同步。通过使用 OrderTableModel.changeData() 方法,我们可以在任何时候更新模 型中的数据 (并显示这些数据) 。 编程 GUI 和连接事件流 在清单 2 中 (以红色高亮显示),我们可以看到如何通过 JGCart 类的 CreateUIandPrepChannel() 和 addOrderItem()    方法将 CatalogUI 组 件连接到 OrderList 组件。 注意, addOrderItem() 方法不是由于 Buy按钮点击事件而直接被调用的。相反,点击 Buy 按钮会产生一个 到群集的所有成员 (包括发送消息的成员) 的AddItemMessage 消息的 广播。实际上, addOrderItem() 方法是在该消息的处理期间,通过 MessageListener 接口 (由 JGCart 类实现)的 receive() 方法调用的。这将有效地复制购物车中的所有更改到该组 的所有成员。 如果您对所有 GUI 类的详细操作感兴趣,请参见 参考资料部分,以下载源代码。 清单 2. 在 JGCart 中创建 GUI 及转发事件 高影响力的Web层群集,第一部分: 利用JavaGroups扩展(10)时间:2011-04-16 IBM Sing Li测试可视化购物车 要观察该应用的会话复制行为,请执行一下步骤: 通过使用 run.bat 批处理文件 (在代码分布的 src 目录下),在您的系统上启动 JGCart 的一个实例。您需要编辑 run.bat 文件,以指定 JavaGroups 库位于哪里。 在同一 LAN 上的另一台 PC 上启动另一个实例 (如果您不是工作在 LAN 上,则在同一台 PC 上启动另一个实例)。 在第一个实例上,单击目录,然后单击几件商品的 Buy按钮。注意,会话状态更改马上被 复制到其他机器。 图 10 演示了由  JGCart 表示的两个复制的会话。注意它们之间如何保持同步 。 图 10. 复制的 JGCart 会话 如果您在 LAN 上不止有两台机器,您就可以容易地将该实验群集扩展到更多的机器―― 只要在这些机器上启动 JGCart 的新实例。 现在假设该购物车会话是运行在一个应用服务器内,而该服务器硬件崩溃了。通过关闭第 一个 JGCart 实例,我们可以模拟这一场景。当然,很容易看到,通过发送请求到会话的第 二个实例,我们可以继续购物。以群集的术语来说,这是一个 fail-over。在群集中的多台 服务器之间的硬件崩溃事件中幸免于难的能力,确保了服务的高可靠性。 实际上,即使没有 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |