1

我正在尝试以集群模式运行 jboss 服务器(5.1.0)。我在同一主机中有两个节点。当我将两个节点作为单独的 URL 访问时,它运行良好。

我正在使用 Apache HTTP 服务器使用代理平衡器(使用代理传递、代理反向配置)对我的请求进行负载平衡。当我访问 Apache 服务器 URL 时,它会尝试在 2 台机器之间进行负载平衡。

我经常收到此错误,无法恢复 login.xhtml 并且相应的节点在此之后停止服务请求,有人可以告诉我这里发生了什么吗?

Caused by: javax.faces.application.ViewExpiredException: viewId:/login.seam - Vi
ew /login.seam could not be restored.
        at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.jav
a:185)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
        at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.jav
a:103)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
4

1 回答 1

2

此异常与 JSF 有关。

添加到 web.xml

<context-param>

    <param-name>org.ajax4jsf.handleViewExpiredOnClient</param-name>

    <param-value>true</param-value>

</context-param>

并在所有页面的标题中(我建议创建一个通用标题)添加:

    A4J.AJAX.onExpired = function(loc, expiredMsg){

    if(window.confirm("Custom onExpired handler "+expiredMsg+" for a location: "+loc)){

      return loc;

    } else {

     return false;

    }

}

在此处阅读有关在 RichFaces 中处理此异常的更多信息

于 2010-07-04T06:50:12.140 回答