如何在不同Web服务器中的两个Web应用程序中共享会话?

时间:2016-06-29 22:06:31

标签: java web-applications jboss easerver

我有以下问题。客户在EAServer 5.5.0中运行了一个带有自定义登录的Java EE Web应用程序。登录非常简单,当应用程序验证用户通过网页输入的凭据时,将用户名和配置文件存储在会话变量中。这样,应用程序就知道会话是否仍然存在。现在,客户在jboss server 7.1中运行了另一个Java EE Web应用程序,并希望当用户登录在EAServer上运行的Web应用程序时,同时登录在Jboss Server中运行的应用程序,并执行任何后续步骤。

我的第一个想法是通过ajax调用将凭据从EAServer发送到Jboss Web应用程序,并将凭据存储在会话中,与EAServer一样。这似乎在Internet Explorer上工作正常,但在chrome或firefox中,ajax调用已完成,会话变量在jboss中创建,但当用户尝试在Jboss应用程序上查看任何视图时,会话变量就消失了。

有人可以告诉我这样做的最佳方式或做法是什么?或者在面对ajax调用后没有保留会话变量的whit chrome和firefox面临什么样的问题?

2 个答案:

答案 0 :(得分:1)

您可以采取的一种方法是在评论中Leonardo Luiz suggested进行单点登录。

但我有另一个建议。只需安装Redis并将其用作会话存储。现在这是非常标准的,它也广泛用于Ruby on RailsNodeJs和Java。

一些可能让你前进的图书馆:

Spring Session

Tomcat Redis Session Manager(我知道你使用的是不同的servlet服务器,但你仍然可以看一下这个想法)

或者您可以选择使用memcached。在这种情况下,您可以使用:

memcached-session-manager

答案 1 :(得分:0)

您需要的功能称为Single sign-on。我认为将现有解决方案集成到您的环境中比创建自定义解决方案更好。

我已经使用了两个解决方案:

这不是一项轻松的任务,需要一些安全问题的知识。

如果您真的想创建自定义解决方案,请在此处提供一些信息:http://merbist.com/2012/04/04/building-and-implementing-a-single-sign-on-solution/