我一直在使用JSR223采样器来处理一些java代码,但现在我正在实现Java Request sampler。 JSR223代码无法直接在Java Request采样器中工作。需要做出一些改变。对于例如在JSR223中,代码是:
props.put("p_driver", driver);
object = props.get("p_driver").getJsonObject(dbser, dbn, wfid);
这里的驱动程序是Driver类型的对象(我们编写的实用程序类。
我想创建一个Object类型的属性并将驱动程序对象保留在其中。 此外,我想通过Java获取和设置不同的属性。 我知道我们可以使用:
JMeterContextService.getContext().getCurrentSampler().getProperties("p_driver");
但是,jmeter变量和jmeter属性在Java Request Sampler中的工作原理非常清晰。
答案 0 :(得分:2)
检查JavaSamplerContext哪个是Sampler上下文,它只支持get(只读)操作:
JavaSamplerContext用于向JavaSamplerClient实现提供上下文信息。这当前包含在GUI中指定的初始化参数。
代码中的实施说明:
此类中的所有方法目前都是只读的。
我看到你设法得到属性,所以这是为了读取GUI中使用的属性/变量,而不是设置/更新属性/变量。
特别是不支持影响多线程的更新属性:
如果将来包含更新方法,则应定义它们以便a JavaSamplerContext的单个实例可以与每个线程相关联。
这是读取JMeter变量的kafka示例:
答案 1 :(得分:1)
您正在寻找的是JavaSamplerContext。
使用JMeter 4.0,您可以访问:
javaSamplerContext.getJMeterProperties()允许您设置/获取可以使用$ {__ P(propName)}访问的属性,确保以线程安全的方式使用
javaSamplerContext.getJMeterVariables()允许您设置/获取可以使用$ {varName}访问的变量,确保以线程安全的方式使用它
然后您可以通过以下方式获取变量或属性:
。javaSamplerContext.getJMeterProperties()得到(" PROPNAME&#34)
。javaSamplerContext.getJMeterVariables()得到("的varName&#34)
然后,您可以通过以下方式设置变量或属性:
javaSamplerContext.getJMeterProperties()。put(" propName",你想要的对象)
javaSamplerContext.getJMeterVariables()。putObject(" varName",你想要的对象)