java - JSF - JBoss 集群上的 SessionExpirationPhaseListener

标签 java jsf-2 jboss7.x session-timeout phaselistener

我们收到此异常:

TimeoutException: JBAS010213: Cannot acquire lock default-host/...

我们在 Web 应用程序中使用此 PhaseListener 来捕获 ajax 请求的 session 超时并重定向到索引(我们怀疑这可能相关,但我们不知道):

public class SessionExpirationPhaseListener implements PhaseListener {

@Override
public PhaseId getPhaseId() {

    return PhaseId.RESTORE_VIEW;

}

@Override
public void beforePhase(PhaseEvent event) {
}

@Override
public void afterPhase(PhaseEvent event) {
    FacesContext context = FacesContext.getCurrentInstance();
    HttpServletRequest httpRequest = (HttpServletRequest) context.getExternalContext().getRequest();
    if (httpRequest.getRequestedSessionId() != null && !httpRequest.isRequestedSessionIdValid()) {
        String facesRequestHeader = httpRequest.getHeader("Faces-Request");
        boolean isAjaxRequest = facesRequestHeader != null && facesRequestHeader.equals("partial/ajax");
        // navigate to home page only for ajax requests
        if (isAjaxRequest) {
            ConfigurableNavigationHandler handler = (ConfigurableNavigationHandler) context.getApplication().getNavigationHandler();
            handler.performNavigation("home");
        }
    }
}

}

我们正在一个具有 2 个节点(mod_cluster + apache)的 JBoss 集群上运行,并且启用了 SSO。 你们知道可能出了什么问题吗?或者至少为我们指明了正确的方向?

谢谢, 问候。

最佳答案

我认为这里的问题是两个节点试图访问同一 session ,其中一个节点正在处理传入请求,第二个节点正在执行 session 过期。

检查您的ajax调用中是否发送cookie,一个可能的问题是在不是 session 所有者的节点中执行阶段监听器。

编辑:

存在此错误可能与此问题相关:https://bugzilla.redhat.com/show_bug.cgi?id=993041

关于java - JSF - JBoss 集群上的 SessionExpirationPhaseListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26653125/

相关文章:

java - System.out.println(1/10) 打印 0?

java - 如何在JavaFx中动态删除节点

javascript - 在 JSF 中 - 获取客户端的语言环境(以浏览器的时区显示时间)

java - 像tomcat7一样在JBoss中部署.WAR

java - JBoss 启动缓慢,可能与指向 Heroku Postgres 的数据源有关

java - 多个Spring Boot错误: package org. springframework.boot不存在

java如何检查文件是否存在并打开它?

date - 第二天使用日历 JSF primefaces 检查

jsf - 使用 CKEditor 代替 PrimeFaces 编辑器

eclipse - JBoss AS 7 中的 FileNotFoundException