不允许共享会话。通过(servlet规范)定义,会话属于单个Web应用程序。
参考: Servlet Spec 4.0 ,第7.3节:
HttpSession 对象必须在应用程序(或servlet上下文)级别作用域。底层机制(例如用于建立会话的cookie)对于不同的上下文可以是相同的,但引用的对象(包括该对象中的属性)决不能由容器在上下文之间共享。
HttpSession
有些方法可以通过设置共享缓存等来解决这个限制,但从安全性或资源使用角度来看,它总是很脆弱且有潜在危险。
使用唯一用户身份验证令牌的用户数据库或用户数据文件(nosql),可由两个应用程序访问(或3,4,5 ...)
全球概念:
共享Web应用程序至少是Bad Practice(TM):Web应用程序完全按设计分离。如果两个应用程序都可以轻松地进入彼此的会话:想象一下如果一个人会覆盖另一个人设置的值,并且两个应用程序都希望在同一个键名下有不同的数据,会发生什么。
如果你只需要单点登录,就有一个 SingleSignOnValve 可用,确保您只需登录一次(前提是您通过容器进行身份验证,例如Tomcat Realm)。校验 server.xml 对于注释掉的默认值,或者有关认证和阀门的更多信息的文档。
SingleSignOnValve
server.xml
您可以通过在两个模块中实现UI并参考常见的业务逻辑来解决这个问题,但这是一个过于宽泛的架构更改,无法适应此答案。