我正在使用Apache JMeter 2.10来记录部署在WebLogic Server版本10.3.6上的ADF应用程序。我们的应用程序是使用JDeveloper版本11.1.2.4开发的。我们在应用程序的某些位置调用任务流作为弹出窗口。在运行记录的JMeter脚本时,执行失败,在HTTP请求的响应数据中给出ViewExpiredException(下面给出了异常详细信息)。这是因为'javax.faces.ViewState'的值在遇到任务流时发生了变化。请帮助我在录制JMeter脚本时如何解决这个问题。
ADF_FACES-30107:页面的视图状态已过期。重新加载页面。 at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._restoreView(LifecycleImpl.java:726) at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:349) 在oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:202) 在javax.faces.webapp.FacesServlet.service(FacesServlet.java:508) 在weblogic.servlet.internal.StubSecurityHelper $ ServletServiceAction.run(StubSecurityHelper.java:227) 在weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 在weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301) 在weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
答案 0 :(得分:0)
这称为关联,您需要从每个请求中提取ViewState并将其添加到下一个请求以匹配页面状态级别更改。
为了实现这一目标,您需要为每个请求添加Regular Expression Extractor后处理器
使用ReferenceName,即jsfViewState
正则表达式
<input type="hidden" name="javax\.faces\.ViewState" id="javax\.faces\.ViewState" value="(.+?)" />
模板$1$
对于之前的请求。
并确保您为下一个请求传递以下参数:
javax.faces.ViewState=${jsfViewState}
希望这会有所帮助。
答案 1 :(得分:0)
对我来说,在web.xml中添加以下行就可以了:
<context-param>
<param-name>com.sun.faces.enableRestoreView11Compatibility</param-name>
<param-value>true</param-value>
</context-param>
答案 2 :(得分:0)
线程组 - &gt;添加 - &gt; ConfigElement - &gt; HTTPCookieRequest并在每次迭代时启用Clear cookies。下面是HttpCookiemanager的图片,您可以将其作为参考。