我是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存储库中。
答案 0 :(得分:2)
invalidateAll
被记录为WLS 10.3(也称为11g)的一部分,因此它应该在您的注销servlet中工作。你试过它并遇到任何错误吗?
它还有一个注销servlet 调用session.invalidate()。后 打电话给我,我无法访问受保护的 主应用程序中的页面,但可以 访问另一个受保护的页面 应用
这向我表明,会话在Web应用程序中共享不,这是默认行为。如果会话已共享,则用户将从所有应用程序中注销。对于要共享的会话,您必须设置sharing-enabled
真的
默认情况下,Web应用程序不会 分享同一个会话。如果你能 像Web应用程序一样分享 同一个会话,你可以配置 应用程序中的会话描述符 weblogic-application.xml中的级别 部署描述符。启用Web 应用程序共享相同 会话,设置共享启用 会话描述符中的属性 在weblogic-application.xml中为true 部署描述符。