【问题标题】:Enforce javax.faces.application.ViewExpiredException for testing application强制执行 javax.faces.application.ViewExpiredException 以测试应用程序
【发布时间】:2014-08-30 07:05:20
【问题描述】:
我想测试我的 web 应用程序 (JSF 2.2),它有一个自定义的 Esxception 处理程序工厂。
现在我想知道当抛出 javax.faces.application.ViewExpiredException 时一切是否正常。有什么办法可以减少等待获得此异常的时间吗?
以编程方式抛出它不是一种选择,因为我希望有一个几乎 100% 有效的测试场景。
【问题讨论】:
标签:
java
jsf
viewexpiredexception
【解决方案1】:
就我而言,当您将 JSF 视图状态保持在服务器端时,强制会话过期应该足够了:
但是,将 STATE_SAVING_METHOD 设置为客户端还有一个额外的功能优势:当会话过期或客户端打开太多视图时,它可以防止 ViewExpiredExceptions。
所以,作为javax.faces.STATE_SAVING_METHOD 默认为server,您只需要指定您想要的 Http 会话的超时时间:
<session-config>
<session-timeout>2</session-timeout>
</session-config>
作为替代方案,您可以选择设置您自己的观看次数限制。这取决于具体的 JSF 实现,Mojarra 默认为 16,MyFaces 为 20。对于第一个,您可以使用 com.sun.faces.numberOfLogicalViews 来减少每个客户端同时接受的视图数量。例如,当您在同一个浏览器(同一个 Http 会话)中打开四个选项卡时,将其设置为 3 应该会触发异常。
另请参阅:
【解决方案2】:
在 Google Chrome 中,您可以使用开发者工具删除会话 cookie。
【解决方案3】:
Web.xml
你应该有类似的东西:
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
超时时间以分钟为单位,因此设置为 1