如何在带有 HTTPS 和 cookie 的 Jmeter 中使用 syncproxy

how to use syncproxy in Jmeter with HTTPS and cookie

我有一个使用 GWT 实现的 Web 应用程序,客户端/服务器正在使用 GWT-RPC 协议进行通信。

要执行负载测试,我想使用 Jmeter。我已经实现了一个使用 SyncProxy 执行 GWT-RPC 调用的 Jmeter 插件。在开发环境中,它可以正常工作,但我在生产环境中遇到了麻烦,因为 GWT-RPC 调用不工作。

我得到以下异常: com.gdevelop.gwt.syncrpc.exception.SyncProxyException:缺少 POLICY_NAME_MISSING 服务 com.xxx.MyWebAppService

开发环境和生产环境的主要区别是: - 使用 HTTPS 而不是 HTTP - 在生产中,如果客户端尚未经过身份验证,Apache 服务器将执行 HTTP 重定向,否则请求将转发到 tomcat 实例。还有一组用于管理此会话机制的 Cookie。

有没有办法在使用 SyncProxy 调用 GWT-RPC 之前在我的 Jmeter 插件中添加 Cookie?

有人对这种类型的架构有一些经验吗? 此致,

塞巴斯蒂安

正如我在最初 post 中所解释的那样,执行 GWT-RPC 调用的问题是由于 Cookie 没有从 Jmeter 传输到 GWT-RPC。

为了解决这个问题,我做了以下工作:

  1. 为了将 Cookie 从 Jmeter 传输到我的 Jmeter 插件,我设置了 Jmeter 属性:CookieManager.save.cookies=true。接下来,我能够使用简单的参数
  2. 将 cookie 从 Jmeter 环境传输到我的 Java 插件
  3. 为了初始化 GWT-RPC 代理与 syncProxy 库的通信,我调用了方法 SyncProxy.setBaseURL() 但不幸的是,此方法不采用 cookie 管理器,因此初始化无法进行。为解决此问题,我对 SyncProxy 库中的代码进行了少量更改,以使用默认的 CookieManager。在 SyncProxy GitHub https://github.com/jcricket/gwt-syncproxy/issues/49
  4. 上跟踪了此问题
  5. 为了创建存根以执行 GWT-RPC 调用,我将 SyncProxy.createProxy() 与 ProxySetting 结合使用,其中包含带有我的默认 cookieManager 的 CookieManager。

通过这些更改,我的 Jmeter 插件甚至可以在我的生产环境中执行 GWT-RPC 调用;-)