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

arthas下,ognl 调用含list参数的方法?list对象如何构建?

在 Arthas 中,您可以使用 ognl 命令来调用含有 List 参数的方法,同时可以构建 List 对象并传递给该方法。以下是在 Arthas 中执行这些操作的步骤:

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

使用 ognl 命令:使用 ognl 命令来执行 OGNL 表达式以调用方法。您需要构建一个包含 List 参数的 OGNL 表达式,同时构建 List 对象并传递给该方法。例如:

bash

$ ognl -c 18b4aac2 '#context=@com.zhumeng.springstudy.module.util.SpringContextUtil@getApplicationContext(),#context.getBean("userServiceImpl").getUserInfosByIds((#test=new java.util.ArrayList(),#test.add("2"),#test.add("3"), #test))' -x2

在这个示例中,我们使用 ognl 命令来调用 获取springboot的上下文,并获取到bean userServiceImpl,调用其方法,传参是个ArrayList,通过new java.util.ArrayList(),注意这里要全路径,然后为其put设置其属性值,最后将#test作为参数传给getUserInfosByIds

查看结果:Arthas 会执行 OGNL 表达式,并显示调用方法的结果。

在构建 List 对象时,您可以根据实际情况添加元素。确保元素的类型与目标方法参数的期望类型相匹配。

请注意,构建正确的 OGNL 表达式和 List 对象可能会因应用程序的结构和需求而有所不同。确保您了解方法的参数要求,以正确构建 OGNL 表达式和 List 对象。 Arthas 的官方文档和在线教程也提供了更多关于如何使用 ognl 命令的信息。


评论