驽马十驾 驽马十驾

驽马十驾,功在不舍

目录
arthas执行静态方法和Spring对象的方法
/    

arthas执行静态方法和Spring对象的方法

参考文章:

arthas神器啊,直接执行某个方法,能够很好的观察输出。

Spring

设置输出内容为json

options json-format true

找到classloader

classloader -l

找到spring对象并执行方法

# 执行无参数
vmtool -c f2c488 --action getInstances \
--className org.springframework.context.ApplicationContext \
--express 'instances[0].getBean("globalCtxManager").obtGlobalStatistics()'

# 执行带参数的方法,其中参数是普通变量
vmtool -c f2c488 --action getInstances \
--className org.springframework.context.ApplicationContext \
--express 'instances[0].getBean("globalCtxManager").obtUserAliveStatus(1156083311884992513L)'

# 执行带参数的方法,其中参数是对象。如果需要构建对象,可以参考:
# https://juejin.cn/post/6844904013859651597#heading-16
vmtool -c f2c488 --action getInstances \
--className org.springframework.context.ApplicationContext \
--express 'instances[0].getBean("liveCoreService").searchLiveInfo((#demo=new com.uewell.ubirth.bus.live.bo.live.LiveInfoParam(), #demo.setId('12345L'),#demo))'

直接执行静态方法

ognl  -c 54acff7d '@io.netty.buffer.PooledByteBufAllocator@DEFAULT'
ognl  -c f2c488 '@io.netty.util.internal.PlatformDependent@DIRECT_BUFFER_PREFERRED'
骐骥一跃,不能十步。驽马十驾,功在不舍。