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