代码之家  ›  专栏  ›  技术社区  ›  Casey

在weblogic 11g中使所有应用程序的会话失效

  •  0
  • Casey  · 技术社区  · 15 年前

    我是weblogic的新手,正在从jboss移植一系列web应用程序。我在同一个weblogic服务器上部署了多个war。所有这些都配置为基于表单的身份验证,由active directory支持。

    但是,我在注销应用程序时遇到问题。我有一个应用程序用作包含实际login.jsp表单的登录应用程序。它还有一个注销servlet,它调用session.invalidate()。调用此命令后,我无法访问主应用程序中的受保护页,但可以访问其他应用程序中的受保护页。

    从我阅读的内容来看,weblogic 11g在所有应用程序中共享同一会话,这与我所看到的是有道理的。我正在查找对使用以下方法使所有应用程序中的会话无效的引用:

    invalidateAll(HttpServletRequest req)
    

    包装内

    weblogic.servlet.security.ServletAuthentication
    

    谢谢

    更新:

    根据Josek下面的回答,我必须在weblogic.xml文件中为我正在部署的所有应用程序添加以下内容:

     <session-descriptor>
         <sharing-enabled>true</sharing-enabled>
     </session-descriptor>
    

    1 回复  |  直到 15 年前
        1
  •  2
  •   JoseK    15 年前

    invalidateAll 作为WLS 10.3(又称11g)的一部分进行了记录,因此它应该在注销servlet中工作。你试过了吗?遇到了什么错误吗?

    它还有一个注销servlet 打这个电话,我无法访问受保护的 主应用程序中的页,但可以 访问另一个受保护的页面 应用

    这向我表明,会话是 在web应用程序之间共享,这是默认行为。如果会话是共享的,则用户将从所有应用程序中注销。要共享会话,必须设置 sharing-enabled

    作为 the docs state ,

    默认情况下,Web应用程序不 共享同一会话。如果你愿意 像Web应用程序一样共享 同一会话,您可以配置 weblogic-application.xml中的级别 部署描述符。启用Web 共享相同的应用程序 会话,设置共享已启用 会话描述符中的属性 部署描述符。

    推荐文章