我试图通过beanshell从我的jmeter测试中执行一个java jar .
我遵循的方法是创建一个shell脚本,使用Runtime.exec()函数通过beanshell执行它 .
The question I have is whether execution of this shell script will take java from instance/host/OS level or it will be executed as part of current java that the application is using.
可能有一些悬而未决的问题,我想在此之前提供答案:
-
我有一个maven项目,我指定了java .
-
构建运行jmeter脚本,该脚本具有执行jar文件的beanshell .
-
我还使用jar执行的输出进行一些处理(将特定输出写入另一个文件,因此我编写了shell脚本) .
-
我使用此特定输出,并在查询之前使用它在jmeter中添加到我的请求中 .
任何帮助表示赞赏 .
2 回答
在某种程度上,两者 .
shell脚本将作为Java程序的一部分执行,但它将使用在
exec()
方法调用中指定Java可执行文件的系统's default Java executable unless you' ve来执行 .取决于您运行应用程序的方式 . 如果你只是使用
Process实例将查找
java
可执行文件,该文件可在您的操作系统PATH中找到 . 如果PATH中没有java
可执行文件 - 则调用将失败 .请注意starting from JMeter 3.1 it is recommended to use JSR223 Test Elements and Groovy language用于任何形式的脚本,因此请考虑在下一个可用机会上迁移到Groovy . 例如,您可以启动流程并获得简单的输出:
而不是在单独的进程中运行.jar,最好将它添加到JMeter Classpath并直接从Groovy代码调用必要的函数 . 有关更多信息,请参阅Apache Groovy - Why and How You Should Use It文章 .