У меня довольно простое веб-приложение, развернутое в GlassFish 3.0.1.Я использую обычную аутентификацию на основе форм и защищаю приложение, используя область JDBC.Представление обрабатывается JSF 2 с использованием Facelets.
Проблема, с которой я столкнулся, заключается в том, что по истечении сеанса пользователь нажимает кнопку ах: commandButton или что-либо еще, что отправляет сообщения, и получает ужасную желтую страницу, сообщающую им об этом.была ошибка синтаксического анализа XML.В журналах я получаю три следа стека:
INFO: PWC2787: Session event listener threw exception
org.jboss.weld.context.ContextNotActiveException: WELD-001303 No active contexts for scope type javax.enterprise.context.RequestScoped
at org.jboss.weld.manager.BeanManagerImpl.getContext(BeanManagerImpl.java:679)
at org.jboss.weld.bean.proxy.ClientProxyMethodHandler.getProxiedInstance(ClientProxyMethodHandler.java:138)
at org.jboss.weld.bean.proxy.ClientProxyMethodHandler.invoke(ClientProxyMethodHandler.java:100)
<snip>
WARNING: ApplicationDispatcher[/core] PWC1231: Servlet.service() for servlet Faces Servlet threw exception
javax.faces.application.ViewExpiredException: viewId:/login.xhtml - View /login.xhtml could not be restored.
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:212)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:110)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
<snip>
WARNING: Unexpected error forwarding or redirecting to login page
javax.servlet.ServletException: viewId:/login.xhtml - View /login.xhtml could not be restored.
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:325)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:822)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:517)
<snip>
Кажется, я не могу найти простой и понятный способ решения этой проблемы.Я попытался установить обработчик ошибок для ViewExpiredException в web.xml, но он так и не был вызван.Я предполагаю, что система уже сдалась по первому исключению.Сейчас мне не особо важно, куда я отправляю пользователей в такой ситуации, если они не видят желтую страницу смерти!
Примечание: ссылки без обратной передачи работают, находят и перенаправляют настраница входа правильно.