【问题标题】:javax.faces.application.ViewExpiredException with JMeter in JSF ApplicationJSF 应用程序中带有 JMeter 的 javax.faces.application.ViewExpiredException
【发布时间】:2018-04-20 21:42:34
【问题描述】:

我是 JMeter 的新手。

我正在使用 JMeter 测试 JSF 应用程序中的场景,登录应用程序并打开 crud 页面 (issue_warning_create.jsf) 以在数据库中创建记录的场景,它在我的浏览器中是成功的,但是当我使用 JMeter 测试场景时它失败并出现此异常:

javax.faces.application.ViewExpiredException: viewId:/secure/adt/fin/issue_warning_create.jsf 无法恢复。

我注意到 JMeter 使用的会话 ID 与从响应中获取的会话 ID 不同。我试图听注销以终止会话并在 JMeter 中使用新会话发出新请求,但也给了我同样的异常。我添加了 http cookie 管理器和 xpath 提取器以获取图像中的视图状态:

【问题讨论】:

标签: java jsf jmeter


【解决方案1】:
  • 您必须添加Cookie Manager

  • 您还必须使用 Regex Extractor 关联 JSF 视图状态:

正则表达式:输入 type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="([^"]+)".*/

varName: jsfViewState

模板:$1$

然后,您必须在 ${jsfViewState} 存在的任何地方使用它。

见:

在您的测试中,将 XPath Extractor 中的 -1 替换为 1

【讨论】:

  • 非常感谢这解决了我的问题
  • 请 UBIK LOAD PACK 这个页面有一些列表来选择项目然后提交到数据库,当我在 jmetere 中运行场景时有 5 个用户没问题但是当我运行它时有 10 个用户给我 java.lang .IndexOutOfBoundsException:索引:0,大小:0。为什么?
【解决方案2】:

JSESSIONID 可以在 2 种模式下运行:

  1. 作为HTTP Cookie,在这种情况下,HTTP Cookie 管理器可以解决问题
  2. 作为 URL 的一部分。如果您的应用程序将 JSESSIONID 附加到请求 URL,您需要使用 HTTP URL Re-writing Modifier 自动处理此值并相应地修改您的 URL。

关于Viewstate,您的XPath Extractor 似乎是正确的,但是如果XHTML 格式不是很好,您可能需要勾选Use Tidy 框。使用Debug SamplerView Results Tree 侦听器组合仔细检查您的myViewState 变量值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-27
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 2012-09-25
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    相关资源
    最近更新 更多