session-timeout - JBoss会话超时





(3)


令人遗憾的是,在JBoss EAP 6.1.0.Alpha1(AS 7.2.0.Alpha1-redhat-4)中,我们回到了在web.xml中设置每个web应用程序的方式: 请参阅JBoss文档

哪个说使用这个:

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

我试图写我的应用程序的一部分,以便它正常处理会话超时,但我似乎无法控制如何超时时间的持续时间发生测试。

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

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

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

在tomcat环境中,我没有这个问题。 有没有人有类似的问题与JBoss?




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

deployers/jbossweb.deployer/web.xml

这可能是重写web.xml中的设置。 它不应该,但是,你知道...

检查是否正在改变工作。 如果没有,您可以设置超时编程为您的测试:

HttpSession.setMaxInactiveInterval(int seconds)

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




我使用了以下解决方案。

在spring security中定义了无效的session url

<security:session-management invalid-session-url="/invalidate.do"/>

对于该页面添加了以下控制器

@Controller
public class InvalidateSession
{
    /**
     * This url gets invoked when spring security invalidates session (ie timeout).
     * Specific content indicates ui layer that session has been invalidated and page should be redirected to logout. 
     */
    @RequestMapping(value = "invalidate.do", method = RequestMethod.GET)
    @ResponseBody
    public String invalidateSession() {
        return "invalidSession";
    }
}

并且对于ajax使用ajaxSetup来处理所有ajax请求:

// Checks, if data indicates that session has been invalidated.
// If session is invalidated, page is redirected to logout
   $.ajaxSetup({
    complete: function(xhr, status) {
                if (xhr.responseText == 'invalidSession') {
                    if ($("#colorbox").count > 0) {
                        $("#colorbox").destroy();
                    }
                    window.location = "logout";
                }
            }
        });




jboss session-timeout