我们得到此异常:JSF - SessionExpirationPhaseListener上一个JBoss集群
TimeoutException异常:JBAS010213:无法获得锁默认主机/ ...
我们使用这些的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?你是否启用了粘滞会话模式? – 2014-10-30 22:42:04
Federico,我们正在使用JBoss EAP 6.3并启用粘滞会话模式。 – Mateo 2014-10-31 12:22:42