View could not be restored

 
 
 
Сообщения:3
Доброго времени суток!

Использую следующее ПО:
IntelliJ IDEA 2018.3.2 (Ultimate Edition).
JBoss 15.0.0.Final.

Есть страница menu.xhtml.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html" xml:lang="en" lang="en"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://xmlns.jcp.org/jsf/html
http://xmlns.jcp.org/jsf/html ">
<h:head>
    <title>Some project</title>
</h:head>

<h:body>
    <h:form>
         <h:outputText value="#{menuBean.text}"/>
         <br/>
         <h:commandLink value="Do something" action="#{menuBean.doSomething}" />
    </h:form>
</h:body>
</html>


Страница работает корректно, действие выполняется. Но при остановке / запуске сервера несколько раз при очередном открытии страницы появляется ошибка "javax.servlet.ServletException: viewId:/menu.xhtml - View /menu.xhtml could not be restored".
Изменение порта сервера и повторный запуск временно решает вопрос. Но через несколько остановок / запусков проблема повторяется. При этом я могу вернуться на предыдущий порт.

По одному из советов в интернете добавил в файл src/main/webapp/WEB-INF/web.xml следующие параметры:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>client</param-value>
    </context-param>
    <context-param>
        <param-name>com.sun.faces.numberOfViewsInSession</param-name>
        <param-value>500</param-value>
    </context-param>
</web-app>


Но ситуация не изменилась.
Полагаю, проблема в этом файле (возможно, не тот каталог или чего-то не хватает).
Прошу Вас о помощи в решении ошибки "View could not be restored".
Спасибо!
 
 
Сообщения:94
похоже на этот случай https://www.mkyong.com/google-app-engine/gae-jsf-view-hello-xhtml-could-not-be-restored/
 
 
Сообщения:3

Благодарю Вас за ответ, но, к сожалению, указание параметра javax.faces.STATE_SAVING_METHOD не решило вопрос.
Может быть проблема с файлом web.xml? Или проблема в версии JBoss (WildFly)?
 
 
Сообщения:249
У Вас перезапуск сервера уничтожает сессию. Поэтому вью становится невалидным. Ошибка проявляется, если где-то сохраняется запрос к серверу со старым вью.
Вы нажимаете на кнопку в оставшейся странице от старой сессии. Вас перекидывает на авторизацию, после чего запрос повторно отправляется спрингом.
Это нормальная ситуация. Можно добавить в faces-config обработчик этого исключения, который будет редиректить или обновлять.
Или попробуйте включить профиль HA в jboss. Тогда сессия будет персиститься на диск на время рестарта.

Изменен:25 янв 2019 17:50
 
 
Сообщения:3
Qwertovsky:
У Вас перезапуск сервера уничтожает сессию. Поэтому вью становится невалидным. Ошибка проявляется, если где-то сохраняется запрос к серверу со старым вью.
Вы нажимаете на кнопку в оставшейся странице от старой сессии. Вас перекидывает на авторизацию, после чего запрос повторно отправляется спрингом.


Благодарю Вас за ответ! Именно использование старой сессии после редеплоя и было причиной ошибки.
После создания этой темы и перебора вариантов решения проблемы я стал интуитивно обновлять страницу после редеплоя, но так и не понял, что именно это и стало решением вопроса.

Quote:
Это нормальная ситуация. Можно добавить в faces-config обработчик этого исключения, который будет редиректить или обновлять.
Или попробуйте включить профиль HA в jboss. Тогда сессия будет персиститься на диск на время рестарта.


Благодарю за совет!
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет