我遇到问题,每次重新部署应用时,任何现有会话都会中断,请求会产生ViewExpiredException
。相关问题或外部邮件列表/论坛帖子中的任何建议似乎都无法解决此问题。我可以完全重新部署相同的WAR文件,但行为是相同的。
我正在使用Apache MyFaces 2.2.0,Tomcat 7.0.56和Primefaces 5.0。
异常的消息是No saved view state could be found for the view identifier:
,其中包含要求的任何页面。 Primefaces' menubar
用于导航,似乎是以带有POST请求的<form>
实现的。这些消息与这些导航选项和使用POST的其他AJAX一起出现。
我试过了:
org.apache.myfaces.SECRET
和org.apache.myfaces.MAC_SECRET
值,如in this document所示。client
参数的server
和javax.faces.STATE_SAVING_METHOD
值。context.xml
已<Manager pathname="" />
已注释掉。答案 0 :(得分:0)
尝试:
<Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="true"/>
答案 1 :(得分:0)
似乎失去会话是一个&#34;功能&#34; Tomcat至少从版本6开始,并在通过WAR文件部署时继续到版本7。我们必须复制一个解压缩的目录以避免丢失会话,因为WAR更改会导致undeploy
后跟deploy
,而不是reload
。
这bug report个州:
有一些方法可以在不删除会话的情况下实现应用程序的更新。最简单的可能是:
- 部署为爆炸目录而不是WAR - 更新文件
- 触摸web.xml以触发重新加载当前行为的原因是为了防止在以不兼容的方式更新WAR时出现问题,除了完全取消部署之后的任何其他内容(基本上)新部署都会导致冲突。
current Tomcat 7.0 documentation中的情况仍是如此:
目前,直接从WAR文件部署Web应用程序时,不支持应用程序重新加载(以获取对类或web.xml文件的更改)。它仅在从解压缩目录部署Web应用程序时才有效。