问题描述
我有一个 JSF (Mojarra 2.2.20),它部署在集群环境中的 Tomcat 8.5 上。
我的 catalina.out
充满了这个错误:
ERROR: MAC did not verify!
我一直在阅读以下帖子:Getting ViewExpiredException in clustered environment while state saving method is set to client and user session is valid 并按照指示的步骤操作。
编辑:考虑到 BalusC 注释,我修改了我的配置,现在看起来像这样。 但是我在生产环境中不断收到错误消息。
这是我的配置:
public void onStartup(ServletContext servletContext) throws servletexception {
servletContext.setinitParameter("javax.faces.STATE_SAVING_METHOD","client");
servletContext.setinitParameter("javax.faces.DEFAULT_SUFFIX",".xhtml");
servletContext.setinitParameter("javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYstem_TIMEZONE","true");
servletContext.setinitParameter("org.omnifaces.FACES_VIEWS_SCAN_PATHS","/*.xhtml");
servletContext.setinitParameter("primefaces.CLIENT_SIDE_VALIDATION","true");
servletContext.setinitParameter("primefaces.THEME","flick");
servletContext.setinitParameter("primefaces.UPLOADER","native");
}
这是我的web.xml
:
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<display-name>app-name</display-name>
<distributable />
<env-entry>
<env-entry-name>jsf/ClientSideSecretKey</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>[KEY generated with the code in the post linked]</env-entry-value>
</env-entry>
<error-page>
<error-code>500</error-code>
<location>/pages/error/error.xhtml</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/pages/error/notFound.xhtml</location>
</error-page>
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/pages/error/timeout.xhtml</location>
</error-page>
<session-config>
<session-timeout>15</session-timeout>
</session-config>
</web-app>
根据 stackoverflow 中发布的其他帖子,我的设置是正确的,我缺少什么?
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)