【问题标题】:how to share data stored in session of different webapps under same tomcat如何在同一个tomcat下共享存储在不同webapps会话中的数据
【发布时间】:2012-05-02 09:00:26
【问题描述】:

我在一个tomcat下部署了几个webapp,每个都有自己的上下文,但是我需要在这些webapp之间共享登录用户信息,例如,当用户从webapp A登录时,它的id,name等信息被存储在会话中,当它尝试访问其他webapp时,我希望我们可以从会话中获取这些信息,根据servlet spce,会话不能在不同的webapps之间共享,有没有办法在部署的不同webapps之间共享这些数据同一个tomcat?

【问题讨论】:

标签: session tomcat share


【解决方案1】:

不容易。 Servlet API 不支持这种用法。有几种方法可以做到这一点:

  1. SSO 可以满足您的大部分需求。

  2. 将信息存储在数据库中,并在需要时在其他 Web 应用程序中查找。

  3. 创建/查找一些可从两个 Web 应用程序访问的共享存储(即某种形式的缓存)。您需要非常小心这种方法,以免造成任何内存泄漏。

  4. 使用跨上下文请求在 Web 应用程序之间传递信息(有点难看,可能会产生安全问题)。

  5. 可能是一堆我没有想到的方法。

【讨论】:

    【解决方案2】:

    1.使用这个属性 crossContext="真"

    2.使用webservice管理用户权限

    【讨论】:

    • 是的,我可以使用crossContext=true从会话中获取数据,但是还有另一个问题,因为A类是由两个不同类加载器的webapps加载的,所以他们不知道每个另外,当我尝试将会话中的 A 实例转换为加载到其他 webapp 中的 A 实例时,会抛出 classNotDefFondException,有没有办法解决这个问题?
    • 在罐子里扭曲“A类”。将jar放在tomcat/lib下。两个项目都应该引用同一个类文件。
    猜你喜欢
    • 2013-03-02
    • 1970-01-01
    • 2021-10-23
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    相关资源
    最近更新 更多