Используйте команду vmtool в Arthas для просмотра свойства объекта в контейнере Spring.

Сцены:

В онлайн-среде я хочу просмотреть значение атрибута объекта в контейнере весной

команда vmtool

метод первый:

 vmtool --action getInstances -c [хэш загрузчика класса] --className [полный путь к целевому классу] --limit 10 -x 2

 Пример: запросите все атрибуты этого класса (этот класс является объектом контейнера в spring, поэтому вы можете напрямую увидеть значение атрибута, работающее онлайн )

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

Способ 2:

грамматика:

 vmtool --action getInstances -c [хэш загрузчика класса] --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' 

Возможные проблемы:

Вопрос 1. Обратитесь к официальному веб-сайту, чтобы напрямую скопировать org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named

  vmtool --action getInstances --className org.springframework.context.ApplicationContext --express 'instances[0].getBean("gisqAuthenticationSuccessHandler")' 
Не удалось выполнить ognl, сообщение об исключении: ognl.MethodFailedException: Метод "getBean" не выполнен для объекта org.springframework.context.annotation.AnnotationConfigApplicationContext@91161c7, запущен вторник, 07 февраля, 11:08:21 CST 2023 [org.springframework.beans.factory.NoSuchBeanDefinitionException: нет bean-компонента с именем 'gisqAuthenticationSuccessHandler'], пожалуйста, проверьте $HOME/logs /arthas/arthas.log для более подробной информации. 
[Артас@1]$ 

 Причина: в реальных проектах это часто веб-контейнер, поэтому полное имя класса контейнера необходимо изменить в соответствии с реальной ситуацией.

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

Вопрос 2: Получить текущий класс, загруженный загрузчиком классов

sc -d [целевой класс]

 Пример:

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

Guess you like

Origin blog.csdn.net/qq_38423256/article/details/128971888