我想知道Servlet规范是否提供了将http会话加载到我的Web应用程序的方法。
这个想法很简单:每次连接一个新的http客户端时,都会创建一个新的会话......我会将这个会话及其值发送到一个数据库中(暂时这个步骤很容易)。
如果这个“主服务器”死机,另一台机器将获取其IP地址,因此http客户端现在将其请求发送到这台新机器(让我们称之为“从服务器”)。
在这里,我希望我的从服务器从旧服务器检索会话......但我不知道Servlet规范中的哪种方法可以“添加”会话!有办法吗?
PS:这是一个大学项目,所以我不能使用已经存在的模块,如Tomcat的mod_jk这个自制的负载均衡器。
编辑:
我认为很多人都认为我不会使用已有的工具。这是一个大学项目,我必须用我的赤手来实现它,以便向我的教授们展示我所使用的低级机制。我已经知道在生产中使用我正在做的事情会很疯狂,当这个项目完成后,它将被抛入垃圾箱。 目前,我没有找到使用Servlet规范的“标准方法”,但我可以使用来自Tomcat本地类的Manager和Session来实现... 如何获取这些接口的实例?
答案 0 :(得分:1)
这不是一个新想法,称为会话复制。有几种方法可以做到这一点。最简单的imho(按优先顺序排列):
至于你的大学项目,我会使用自动会话复制交换嵌入式码头,通过使用hazelcast广播连接到其他服务器。有用,而不是过于复杂(iirc,你需要实现2个相对简单的接口),但功能强大。在你的测试机器前放一块清漆,你应该好好去。
答案 1 :(得分:0)
所有主要的Java EE应用服务器供应商都支持此功能,因此您不应该自己实现任何功能。正如Markus所写,它被称为会话复制或会话持久性。您可以查看可免费用于开发的WebSphere Liberty。它支持开箱即用,无需实现任何功能。你只需要: