【问题标题】:JBoss Session TimeoutJBoss 会话超时
【发布时间】:2026-01-01 16:55:02
【问题描述】:

我正在尝试编写我的应用程序的一部分,以便它能够优雅地处理会话超时,但我似乎无法控制测试超时之前的持续时间。

我正在使用 JBoss 5.1,我正在修改我的 web 描述符 (web.xml) 的会话配置,以便会话在一分钟后超时(仅用于测试)

<session-config>
  <session-timeout>1</session-timeout>
</session-config>

但是通过登录创建会话后,它永远不会超时。我没有设置它会导致超时。

在tomcat环境下,我没有遇到过这个问题。有没有人遇到过类似的 JBoss 问题?

【问题讨论】:

  • 嗨,我在使用 Jboss 5.1 服务器时遇到了同样的问题,我的会话超时不起作用。我已经通过设置 deployers/jbossweb.deployer/web.xml 尝试了上述步骤。我也尝试通过使用 - HttpSession.setMaxInactiveInterval(int seconds) 以编程方式强制超时,但它仍然没有超时。请建议

标签: jboss session-timeout


【解决方案1】:

JBoss 5 允许您在以下位置为所有应用程序定义会话超时:

deployers/jbossweb.deployer/web.xml

这可能会覆盖您在 web.xml 中的设置。它不应该,但是,你知道...

检查更改是否有效。如果没有,您可以通过编程方式为您的测试设置超时:

HttpSession.setMaxInactiveInterval(int seconds)

这样您就可以在特定会话中强制超时。

【讨论】:

    【解决方案2】:

    遗憾的是,在 JBoss EAP 6.1.0.Alpha1 (AS 7.2.0.Alpha1-redhat-4) 中,我们又不得不在 web.xml 中为每个 Web 应用程序设置它:See the JBoss docs

    谁说用这个:

    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
    

    【讨论】:

      【解决方案3】:

      在某些设置的情况下,JBoss 会覆盖您在 web.xml 中提供的设置。您需要在名为“jboss-web.xml”的配置文件中指定相同的内容以应用此设置。您可以将此文件放在 web.xml 旁边的同一文件夹中。

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE xml>
      <jboss-web>  
        <session-config>
          <session-timeout>1</session-timeout>
        </session-config>
      </jboss-web>
      

      【讨论】: