场景:

线上环境我想查看spring中容器某个对象的属性值

vmtool命令

方式一:

 vmtool --action getInstances -c   [类加载器的hash]    --className  [目标类全路径]  --limit 10 -x 2

 实例:查询该类的全部属性情况(该类是一个spring中容器的对象,因此可以直接可以看到线上运行的属性值情况

 vmtool --action getInstances -c 7637f22   --className com.gisquest.cloud.oauth2.authentication.GisqAuthenticationSuccessHandler  --limit 10 -x 2

方式二:

语法:

 vmtool --action getInstances    -c [类加载器的hash] --className [org.springframework.web.context.WebApplicationContext]--express 'instances[0].getBean("对象名")' 

实例:查询spring容器中的某个对象

 vmtool --action getInstances    -c [ 7637f22] --className [org.springframework.web.context.WebApplicationContext]--express 'instances[0].getBean("gisqAuthenticationSuccessHandler")' 

语法:

 vmtool --action getInstances -c 7637f22   --className 【容器全路径】--express 'instances[0].getBean("实例对象名").【属性名】' 

实例:查询spring容器中的某个对象的某个属性值

 vmtool --action getInstances -c 7637f22   --className org.springframework.web.context.WebApplicationContext --express 'instances[0].getBean("gisqAuthenticationSuccessHandler").needUpdatePwdTime' 

可能遇到的问题 :

问题一:参照官网直接复制 org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named

  vmtool --action getInstances  --className org.springframework.context.ApplicationContext --express 'instances[0].getBean("gisqAuthenticationSuccessHandler")' 
Failed to execute ognl, exception message: ognl.MethodFailedException: Method "getBean" failed for object org.springframework.context.annotation.AnnotationConfigApplicationContext@91161c7, started on Tue Feb 07 11:08:21 CST 2023 [org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'gisqAuthenticationSuccessHandler' available], please check $HOME/logs/arthas/arthas.log for more details. 
[arthas@1]$ 

 原因:在实际的项目中往往是web容器,因此容器全类名需要根据实际情况改动。

 vmtool --action getInstances  --className org.springframework.web.context.WebApplicationContext --express 'instances[0].getBean("gisqAuthenticationSuccessHandler")' 

问题二:获取当前类是那个类加载器加载的

sc -d 【目标类】

 实例:

sc -d com.gisquest.cloud.oauth2.authentication.GisqAuthenticationSuccessHandler

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐