【问题标题】:Problem with sessions on weblogicweblogic上的会话问题
【发布时间】:2010-12-16 12:33:18
【问题描述】:

我在使用 weblogic 时遇到了一个奇怪的问题。我们的一个工作站托管 2 个 weblogic 实例。问题是当我登录其中一个时,另一个会话会自动过期,反之亦然。会是什么?如何处理这个问题?

【问题讨论】:

  • 两台机器上的登录ID相同?您是否以管理员身份登录?
  • 登录ID是什么意思?我在哪个用户下登录都没有关系,反正另一个实例上的会话会自动过期。

标签: java session weblogic


【解决方案1】:

如果会话 ID 存储在客户端的 cookie 中,请确保两个 weblogic 实例上的 cookie 名称不同。

更改 cookie 名称的一种方法是在您的 webapps 中创建一个名为 weblogic.xml 的文件(或在您的 EAR 中创建一个名为 weblogic-application.xml 的文件,只需替换标签 weblogic-web-app by weblogic-application)包含以下内容(根据您的需要自定义cookie名称):

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90">
    <session-descriptor>
        <cookie-name>MyCookieName</cookie-name>
    </session-descriptor>
</weblogic-web-app>

【讨论】:

  • 好吧,我会尝试,但实际上它是一个相同的应用程序(当然不是物理上的)在两个实例上运行:一个用于开发需求,另一个用于测试。所以,实际上两个应用程序都有相同的 weblogic.xml。但更奇怪的是,我们的演示 weblogic 实例和 jira 有时会在另一个工作站上发生同样的问题。出于某种原因,一些用户遇到了同样的问题:当用户登录 jira 时,他会自动从 weblogic 中注销,反之亦然。考虑到它只发生在某些选定的用户身上,这很奇怪。
  • mukola 我假设你已经用完了不同的战争/部署。因此,对于不同的部署,weblogic.xml 会有变化
  • 在 WebLogic 8 上,这仍然在会话描述符中设置,但您必须将其添加为 名称/值对,请参阅docs.oracle.com/cd/E13222_01/wls/docs81/webapp/…。例如:CookieNameTESTSESSION
【解决方案2】:

由于它们在同一台机器上运行,您的浏览器会看到一个主机(即 localhost)。因为 java webapps 的默认会话 cookie 是 JSESSIONID 并且两者都使用这个 cookie 名称,所以它们将相互覆盖。

解决方法是通过两次启动 IE 来打开 2 个 IE 浏览器窗口。在这种情况下,他们将获得自己的会话 cookie。不幸的是,这不适用于 Firefox 和 Chrome。

nawre 提到了另一种解决方案,即为 2 个 web 应用程序指定不同的会话 cookie 名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 2018-04-01
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 2013-02-04
    相关资源
    最近更新 更多