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

时间:2010-10-14 13:34:13

标签: java-ee weblogic11g

我是weblogic的新手,正在移植jboss的一系列Web应用程序。我有多个战争部署到同一个weblogic服务器。所有这些都配置为由活动目录支持的基于表单的身份验证。

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

从我一直在阅读的内容来看,weblogic 11g在所有应用程序中共享相同的会话,这与我所看到的有关。我发现使用以下内容来引用所有应用程序中的会话无效:

invalidateAll(HttpServletRequest req)

中的

weblogic.servlet.security.ServletAuthentication

但是,我在weblogic 11g中找不到这个或类似的东西。这个实用程序类在哪里或者我该怎么做?

由于

更新:

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

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

我正在寻找的jar名为wls-api.jar,它包含ServletAuthentication类。我使用的是基于zip的10.3.3.0版本的Web逻辑服务器。我在安装wlserver_10.3服务器时发现了jar作为Weblogic Fusion安装的一部分。我刚拿起jar并将它添加到我们的Nexus maven存储库中。

1 个答案:

答案 0 :(得分:2)

invalidateAll被记录为WLS 10.3(也称为11g)的一部分,因此它应该在您的注销servlet中工作。你试过它并遇到任何错误吗?

  

它还有一个注销servlet   调用session.invalidate()。后   打电话给我,我无法访问受保护的   主应用程序中的页面,但可以   访问另一个受保护的页面   应用

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

作为the docs state

  

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