【问题标题】: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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-28
          • 1970-01-01
          • 2021-05-01
          相关资源
          最近更新 更多