【发布时间】: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