现在我们正在开发一个大型应用程序,其中模块被部署为单个.EAR文件(每个文件都包含一个.WAR和一个EJB .JAR)。
我们在 GlassFish 3.1 中将应用程序配置为使用 JAAS 进行单点登录。因此,我们需要在 SSO 会话处于活动状态时保持每个 Web 模块会话处于活动状态。
一个示例可能是: Modules A
,B
并C
使用 10 分钟的会话进行部署。用户使用 登录A
,然后可以导航到B
和C
,并在 上花费(假设)20 分钟C
。
这个想法是,当用户只使用时,我们必须在和C
上保持他的会话(包括托管 bean)处于活动状态。A
B
什么可以帮助我们实现这一目标?一个想法是在每个模块上创建一个 servlet 来接触会话(从而使其保持活动状态),并从用户正在使用的模块向这些 servlet 发送异步(可能是单向的?)请求,但这似乎有点矫枉过正每次用户做某事时打开 HTTP 连接(通过 TCP)。也许投票在这里会有所帮助,但我们想避免这种交流。
另一个想法是使用共享内存缓存和缓存侦听器来访问其他会话,使用会话 ID 进行查找;这可以用更好的性能来解决问题吗?
我们对任何想法持开放态度……除了使用其他应用程序服务器(我们必须使用 OpenSource GlassFish - 没有 Coherence*Web)。
感谢您的时间。