尝试加载平衡http请求时出现ViewExpired异常

时间:2010-07-03 02:57:09

标签: performance richfaces seam cluster-computing jboss5.x

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

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

我得到这个错误经常无法恢复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)

1 个答案:

答案 0 :(得分: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;

    }

}

Read here more about handling this exception in RichFaces