Administrator
发布于 2023-11-08 / 30 阅读 / 0 评论 / 0 点赞

arthas下,ognl 调用一个方法的返回值,作为调用另个方法的参数

在 Arthas 中,您可以使用 ognl 命令来调用一个方法的返回值,并将其作为另一个方法的参数。这可以通过嵌套的 OGNL 表达式来实现。以下是在 Arthas 中执行这个操作的步骤:

连接到目标 Java 进程:首先,使用 as.sh 或 as.bat 启动 Arthas 命令行工具,并连接到目标 Java 进程,方法与之前的回答中描述的一样。

使用 ognl 命令:首先,使用 ognl 命令来调用第一个方法,并获取其返回值。然后,将返回值作为第二个方法的参数传递。例如:

bash

$ ognl -c 18b4aac2 '#context=@com.zhumeng.springstudy.module.util.SpringContextUtil@getApplicationContext(),#value1=#context.getBean("userServiceImpl").getUserInfoById("5"), #value2=#context.getBean("userServiceImpl").updateUserById("1",#value1),{#value1,#value2}' -x 2

在这个示例中,我们首先调用 userServiceImpl 中的 getUserInfoById 方法,将结果存放在变量#value1,再将其作为参数,调用updateUserById方法。

查看结果:Arthas 会执行这两个方法,并显示它们的结果。

请确保 method1 的返回值类型与 method2 的参数类型相匹配。这样,您可以将一个方法的返回值无缝地传递给另一个方法。

这是一种强大的技术,可以用于组合多个方法的调用,以便更有效地执行某些任务。您可以根据需要嵌套多个方法的调用,以满足您的具体需求。 Arthas 的官方文档和在线教程也提供了更多关于如何使用 ognl 命令的信息。


评论