我想测试我的 Web 应用程序 (JSF 2.2),它有一个自定义的 Esxception Handler Factory。 现在我想知道当抛出 javax.faces.application.ViewExpiredException 时一切是否按预期工作。有什么办法可以减少等待此异常的时间吗? 以编程方式抛出它不是一个选择,因为我希望有一个几乎 100% 高效的测试场景。
最佳答案
就我而言,在服务器端保留 JSF View 状态时,强制 session 过期应该足够了:
Setting STATE_SAVING_METHOD to client has however an additional functional advantage: it prevents ViewExpiredExceptions when the session has expired or when the client opens too many views.
因此,由于 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 来减少每个客户端同时接受的 View 数量。例如,当您在同一浏览器(同一 Http session )中打开四个选项卡时,将其设置为 3 应该会引发异常。
另请参阅:
关于java - 强制执行 javax.faces.application.ViewExpiredException 来测试应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24650571/