执行包含java -jar Runtime.exec()的shell脚本,它将采用java,OS级别或应用程序级别

时间:2018-05-11 00:05:32

标签: java performance shell jmeter beanshell

我试图通过beanshell从我的jmeter测试中执行一个java jar。

我遵循的方法是创建一个shell脚本,使用Runtime.exec()函数通过beanshell执行它。

我的问题是这个shell脚本的执行是从实例/主机/操作系统级别获取java,还是作为应用程序正在使用的当前java的一部分执行。

可能有一些悬而未决的问题,我想在此之前提供答案:

  1. 我有一个maven项目,我在其中指定了java。
  2. 构建运行jmeter脚本,该脚本具有执行jar文件的beanhell。
  3. 我还使用jar执行的输出进行一些处理(将特定输出写入另一个文件,因此我编写了shell脚本)。
  4. 我使用此特定输出,并在查询之前使用它在jmeter中添加我的请求。
  5. 感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

在某种程度上,两者都是。

shell脚本将作为Java程序的一部分执行,但它将使用系统的默认Java可执行文件执行,除非您在exec()方法调用中指定了Java可执行文件

答案 1 :(得分:0)

取决于您运行应用程序的方式。如果您只是使用

Runtime.getRuntime().exec("java -jar ...."); 

Process实例将查找您的操作系统PATH中提供的java可执行文件。如果PATH中没有java可执行文件 - 则调用将失败。

请注意starting from JMeter 3.1 it is recommended to use JSR223 Test Elements and Groovy language用于任何形式的脚本编写,因此请考虑在下一个可用机会上迁移到Groovy。例如,您可以启动流程并获得简单的输出:

String response = "your command".execute().text

此外,不是将.jar作为单独的进程运行,而是将其添加到JMeter Classpath并直接从Groovy代码调用必要的函数。有关详细信息,请参阅Apache Groovy - Why and How You Should Use It文章。