Исключение ViewExpired при попытке загрузки баланса HTTP-запросов - PullRequest
1 голос
/ 03 июля 2010

Я пытаюсь запустить сервер jboss (5.1.0) в кластерном режиме. У меня есть два узла в одном хосте. Когда я получаю доступ к двум узлам как отдельным URL-адресам, это работает хорошо.

Я использую HTTP-сервер Apache для балансировки нагрузки моих запросов с использованием Proxy балансировщика (с прокси-пропуском, обратными настройками прокси). Когда я получаю доступ к URL-адресу сервера Apache, он пытается установить баланс между двумя компьютерами.

Я получаю эту ошибку, часто не могу восстановить 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 Ответ

2 голосов
/ 04 июля 2010

Это исключение связано с JSF.

add to 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

...