0

我是 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 逻辑服务器。作为 Weblogic Fusion 安装的一部分,我在 wlserver_10.3 服务器安装的安装中找到了该 jar。我只是拿了 jar 并将其添加到我们的 Nexus maven 存储库中。

4

1 回答 1

2

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

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

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

正如文档所述

默认情况下,Web 应用程序不共享同一个会话。如果您希望 Web 应用程序共享同一个会话,您可以在 weblogic-application.xml 部署描述符中的应用程序级别配置会话描述符。要使 Web 应用程序能够共享同一会话,请在 weblogic-application.xml 部署描述符中将会话描述符中的共享启用属性设置为 true。

于 2010-10-18T10:59:37.640 回答