gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 03:26:37 24 4
gpt4 key购买 nike

现在我们正在开发一个大型应用程序,其中模块被部署为单个 .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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com