您现在的位置是: 软件 > 开发者网络 > 程序方舟 > Java专栏 > 正文


-Win xp中的多种网络
-试验试验试验试验
-用Freehand实现位图矢量化
-网络电话面面观

分布式对话服务器的管理
2001-06-19· ·刘彦清编译··yesky

1 2 3 4 5 6  下一页


  摘要:

  通过使用JDK 1.3中引入的RMI和Proxy API,本篇文章讨论了一种允许一台或多台servlet服务器在一台或多台对话服务器上维护对话信息的技术,采用这种技术后,单一点故障就不会再出现了。

  如果系统中有一台或多台servlet服务器,对话信息只存在于运行着JVM的一台servlet服务器上,而不会被传输给其他servlet服务器。如果该servlet服务器当机或因为维护而被关机,任何保存在对话中的信息都会丢失。如果一个系统中有多台servlet服务器,一个带有对话的用户需要访问对话中的任何信息,都需要被重新定向到同一台servlet服务器。曾经有专家建议采用关系数据库保存所有的对话信息,但这仍然存在单一点故障的危险,那就是运行关系数据库的服务器。而且如果数据库出了故障,所有的servlet服务器就都不能再访问对话信息了。另外,在数据库中保存可串行化的对象在有些数据库中是比较难以实现的。

  多服务器对话管理的另一个可能的途径是利用JavaSpaces API来维护对话对象中的记录。当然,如果运行JavaSpaces的服务器由于维护或故障而被关机,也会丢失所有的对话信息,我们再一次遇到了单一点故障的问题。

  要实现带有N个节点的分布式对话服务器,我们必须解决如下的三个问题:

  ━━如何建立一个库来存贮对话信息。

  ━━如何对分布式对话信息存贮库进行同步。

  ━━在一个对话信息存贮库脱离网络后,如何使该服务器从下一个对话信息存贮库中访问对话信息。


  Mnemosyne的简介

  我们用来存贮对话信息的库是Mnemosyne界面的执行。执行Mnemosyne的对象负责管理对话信息存贮库中的所有对象,任何试图写、访问或删除库中对象的对象都必须调用Mnemosyne的相应的方法来实现相应的操作。

  一个对象要存贮在Mnemosyne,就必须执行Memory界面,该界面定义了equalsMemory()操作来探测二个内存对象是否相同,这就使 Mnemosyne判断出应当把哪个对象返回给read要求或take要求。Memory界面也可以进行串行化扩充,以便我们可以用RMI在网络上传输该对象。

1 2 3 4 5 6  下一页

【责任编辑:方舟】
【发表评论】【关闭窗口】
■ 相关内容
 通过JDBC连接oracle数据库的十大技巧
 无状态Enterprise JavaBeans的观点
 用JSP构建动态网站
 EJB的专用术语解释
 J2EE配置指南
 如何成为一个优秀的jsp程序员
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!