In unserem JSF2 Projekt auf JBoss 7.1.1 definieren wir ein Session-Timeout in web.xml
und es funktioniert gut.
Manchmal erhalten wir jedoch View-Ablauf, was zu Fehlern wie diesem führt, selbst wenn die Sitzung noch am Leben ist:
%Vor%Wo können wir das Zeitlimit für die Ansicht festlegen , wie wir es für Sitzungen getan haben? Oder wird das View-Ablaufdatum durch etwas anderes verursacht?
Ein weiterer Grund für ViewExpiredException
ist, dass zu viele logische Ansichten in der Sitzung erstellt wurden. Das Standardlimit ist JSF-implementierungsspezifisch und jede synchrone GET-Anforderung für eine bestimmte Ansicht erstellt im Grunde eine neue Ansicht. Wenn Sie beispielsweise Mojarra (mit einer Standardbeschränkung von 15) verwenden und eine Browsersitzung starten und dieselbe Ansicht auf 16 verschiedenen Registerkarten öffnen und anschließend ein Formular in der ersten senden, erhalten Sie möglicherweise auch diese Ausnahme . Das Limit kann mit einem JSF-implementierungsspezifischen Kontextparameter konfiguriert werden, der für Mojarra com.sun.faces.numberOfLogicalViews
ist und org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION
in MyFaces (standardmäßig 20).
Dies ist jedoch ein sehr seltenes Problem der realen Welt. Wenn Ihre Webanwendung wirklich so gestaltet ist, dass sie auf diese Weise verwendet werden kann (z. B. eine soziale / Community-Site, die zum Öffnen auf mehreren Tabs wie Diskussionsforum oder Q & A lädt), sollten Sie stattdessen die Client-Seitenspeicherung verwenden. p>