为测试应用程序强制执行javax.faces.application.ViewExpiredException

时间:2014-07-09 09:56:51

标签: java jsf viewexpiredexception

我想测试我的webapplication(JSF 2.2),它有一个自定义的Esxception Handler Factory。 现在我想知道抛出javax.faces.application.ViewExpiredException时是否一切都按预期工作。有什么办法,我可以减少等待获得此异常的时间吗? 以编程方式抛出它不是一种选择,因为我希望有一个接近100%的高效测试场景。

3 个答案:

答案 0 :(得分:2)

就我而言,当你在服务器端保持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应该触发异常。

另见:

答案 1 :(得分:2)

在Google Chrome中,您可以使用开发人员工具删除会话Cookie。

enter image description here

答案 2 :(得分:1)

Web.xml中

你应该有类似的东西:

<session-config>
    <session-timeout>
      30
    </session-timeout>
  </session-config>

超时以分钟为单位,因此设置为1