我在当前项目中遇到了一个奇怪的问题:
我在 Glassfish 3.1 服务器上部署了多个基于 Spring MVC 的 Web 应用程序——我需要能够根据用户各自 web.xml 中的“会话超时”参数“超时”用户——无论在哪个应用程序中用户开启。请不要问为什么应用程序在单独的 WAR 中——架构就是这样。用户通过 WebApp A 登录并被重定向到 WebApp B - 然后用户可以继续跳转到不同的 Web 应用程序 - 我想你明白了。WebAppB 等也有许多 Ajax 调用(我什至不去那里)。我想,这个问题归结为我无法在 WebApp A 和 WebApp B 之间共享会话数据(我可能在这里错了——这是我需要帮助的地方),所以我没有任何通过检查知道的方法
httpServletRequest.getSession(false)
在 WebAppB 中,因为它在第一个请求命中 WebAppB 和第一个请求“在”会话超时“之后”的两种情况下都返回 null。我必须在 WebAppA 的会话中保留“某些东西”并检查它在 WebAppB 的会话中是否存在——这让我回到了在 Web 应用程序中共享会话数据的问题。我不能使用数据库存储,因为这意味着每个请求都会调用数据库。我通过谷歌搜索 Tomcat 中的“crossContext”东西在这种情况下有帮助得到了一个方向 - 但这样的东西在 Glassfish 中会有帮助(我最近发现 sun-web-app.xml 有一个“crossContextAllowed”属性)。
我已经被这个问题困扰了很长一段时间了,我什至不确定这是一个值得你花时间的问题——所以在此先感谢你的帮助。
特里舒尔