【问题标题】:Is a session attribute local to the web application?会话属性是 Web 应用程序的本地属性吗?
【发布时间】:2012-05-14 02:01:17
【问题描述】:

当我在我的 jboss 中部署多个 Web 应用程序时,它们似乎都共享同一个会话,因为只创建了一个具有路径 - / 的 JSESSIONID cookie,这意味着可以从域内的任何地方访问它。但是,如果您在一个 Web 应用程序中执行 session.setAttribute(),该属性是否可用于其他应用程序(当他们使用 session.getAttribute() 时)?

【问题讨论】:

    标签: java session servlets


    【解决方案1】:

    session.setAttribute() 仅适用于您设置其属性的会话。您在每个会话上看到 JSESSIONID cookie 的原因是每个 Web 应用程序都单独设置它(是 Spring Security 吗?)。

    【讨论】:

    • 我的浏览器中只设置了一个 JSESSIONID cookie,其路径是整个域。因此,此 cookie 会发送到请求标头中的所有 Web 应用程序。但我的问题是,如果我在两个网络应用程序中打印会话 ID,我会得到相同的 ID 吗?
    • 我几乎可以肯定它会是不同的 id。尝试使用fiddler 进行调试
    • 我会尝试并告诉你。
    • @Ashwin:在 WebSphere 下,JSESSIONID 在所有应用程序中都是相同的。在 JBoss 下,JSESSIONID 对于每个应用程序都是不同的。
    【解决方案2】:

    据我所知,每个WAR/EAR模块默认都会有自己的会话,所以答案是肯定的,会话属性是本地的,不会在同域的其他web应用中可用(见@ 987654321@)

    【讨论】:

    • 会话属性是否存储在某种数据库中?
    • 它是可配置的,我认为这取决于您使用的应用服务器(不确定 Servlet 规范本身是否对您如何保持会话有任何偏好,但值得检查)这里是 weblogic 的配置选项对于会话持久性,其中之一可以是 JDBC docs.oracle.com/cd/E13222_01/wls/docs90/webapp/…
    • 我正在使用 jboss 服务器。我在哪里可以找到 jboss 如何存储它的会话属性。
    • 我相信你已经看到了这个问题:stackoverflow.com/questions/1922048/… 但如果没有,它会给你一个起点。我会说,要么等待知道的人回答,要么在线挖掘 JBOSS 文档......(例如这里docs.jboss.org/jbossweb/2.1.x/config/manager.html
    • 链接(jboss 链接)包含答案。谢谢:)
    猜你喜欢
    • 2010-10-04
    • 1970-01-01
    • 2014-07-31
    • 2014-10-18
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    • 2017-01-11
    • 2022-01-13
    相关资源
    最近更新 更多