【问题标题】:JSF - SessionExpirationPhaseListener on a JBoss ClusterJSF - JBoss 集群上的 SessionExpirationPhaseListener
【发布时间】:2014-10-30 12:33:46
【问题描述】:

我们遇到了这个异常:

TimeoutException: JBAS010213: 无法获取锁 default-host/...

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

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。 你们知道可能出了什么问题吗?或者至少为我们指明了正确的方向?

谢谢, 问候。

【问题讨论】:

  • 您使用的是什么版本的 jboss?您是否启用了粘性会话模式?
  • Federico,我们正在使用 JBoss EAP 6.3 并启用了粘性会话模式。

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


【解决方案1】:

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

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

编辑:

存在这个bug可能与这个问题有关:https://bugzilla.redhat.com/show_bug.cgi?id=993041

【讨论】:

  • 我们删除了 SessionExpirationPhaseListener,但仍在发生。
  • @Mateo 请查看我添加到答案的链接。
  • 第一个链接看起来与我们的场景非常相似,但我不明白第二个。
  • 感谢@Federico,阅读此developer.jboss.org/thread/162109?start=0&tstart=0,我意识到在JBoss 中将stickySessionsRemove 设置为true 可能是一个可能的解决方案。我们现在正在生产中对其进行测试。
  • 看看这个问题issues.jboss.org/browse/MODCLUSTER-425,也许在JBoss端玩max-connections会有所帮助
猜你喜欢
  • 1970-01-01
  • 2013-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-07
相关资源
最近更新 更多