2

我想测试我的 web 应用程序(JSF 2.2),它有一个自定义的 Esxception 处理程序工厂。现在我想知道当抛出 javax.faces.application.ViewExpiredException 时一切是否正常。有什么办法可以减少等待获得此异常的时间吗?以编程方式抛出它不是一种选择,因为我希望有一个几乎 100% 的生产测试场景。

4

3 回答 3

2

在 Google Chrome 中,您可以使用开发者工具删除会话 cookie。

在此处输入图像描述

于 2014-07-09T10:09:54.327 回答
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 回答