在我们的应用程序中,我们在同一个 tomcat 中部署了 2 个不同的 war 文件。在我们的例子中,我们在 session 中存储了两个 WAR 都需要的一些属性,为此我们应该能够从另一个上下文(另一个 war )访问一个上下文(一个 war )的 session 。
为了实现这一点,我们在 tomcat 中启用了跨上下文,并通过将它们存储在每个上下文的映射中来共享 session 。但是这种方法变得复杂和繁琐,以至于 session 管理变得非常困难。此外,如果我们选择 Tomcat 集群,那么这种方法就会失败。
因此,任何人都可以建议一种更好的方法来跨部署在单个 tomcat 或多个 tomcat 节点中的多个应用程序共享 session
最佳答案
您可以创建一个简单的网络服务来存储 session 相关信息。
就像在 APP1 上登录时创建一个 session 一样,该信息将存储在 web 服务上,该信息将保留该信息直到 APP1 注销。
在 APP1 session 存在之前,APP2 将可以访问相同的信息。
Webservice 可以是一个简单的 REST API,它将包含 JSON 格式的信息。
关于跨 WAR 的 session 共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24362172/