java - 在同一个 glassfish 实例中保持多个 session

标签 java session web glassfish-3

现在我们正在开发一个大型应用程序,其中模块被部署为单个 .EAR 文件(每个文件包含一个 .WAR 和一个 EJB 。 jar )。

我们在 GlassFish 3.1 中配置应用程序以使用 JAAS 进行单点登录。因此,我们需要在 SSO session 处于 Activity 状态时保持每个 Web 模块 session 处于 Activity 状态。

例如:模块 ABC 部署了 10 分钟的 session 。用户使用 A 登录,然后可以导航到 BC,并在 C< 上花费(假设)20 分钟.

想法是当用户只使用 C 时,我们必须在 AB 上保持他的 session (包括托管 beans) >.

什么可以帮助我们实现这一目标?一个想法是在每个模块上创建一个 servlet 来接触 session (从而使它保持 Activity 状态),并从用户正在使用的模块向这些 servlet 发送异步(可能是单向的?)请求,但这似乎有点矫枉过正每次用户做某事时打开 HTTP 连接(通过 TCP)。或许轮询会有所帮助,但我们希望避免这种沟通方式。

另一个想法是使用共享内存缓存和缓存监听器来访问其他 session ,使用 session ID 进行查找;这可以达到更好的性能吗?

我们对任何想法持开放态度...除了使用其他应用程序服务器(我们必须使用 OpenSource GlassFish - 没有 Coherence*Web)。

感谢您的宝贵时间。

最佳答案

您需要 JAAS 吗?您可以使用 spring-security 和 session ID 的支持 redis 缓存来实现解决方案。所以例如当用户在 A 上登录时, session ID 被放入 redis 缓存中,当用户通过将 session ID 作为查询传递的链接导航到 B 时参数,spring 安全层(在 B 上)将确保 session-id 在 redis 缓存中是有效的。 Redis 内置了对过期数据的支持

这是一篇好文章:http://www.infoq.com/minibooks/Identity-Management-Shoestring关于构建中央身份验证服务 (CAS)。

希望对你有帮助

关于java - 在同一个 glassfish 实例中保持多个 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12431446/

相关文章:

java - dumpTreshold 不工作

java - JPA EclipseLink 与 @TableGenerator。为什么事务回滚后id赋的值不为空?

javascript - 如何在没有负载的情况下在标题上创建链接加载页面?

Python 2.7 从登录网站抓取网页

php - 桌面和移动网站

java - 对于Web应用程序的DDD,我应该将丰富的域对象放入表示层吗?

java - Java 中除了多态性还有其他选择吗?

PHP: "The website has too many redirects"当使用 php session 时

java - 谁在 Spring Security 中创建了 JSESSIONID cookie?

java - 在 JSP 中设置 session 并在 servlet 中获取 session