mirror of
https://gitee.com/arthas/arthas.git
synced 2024-12-05 05:37:37 +08:00
2.1 KiB
2.1 KiB
In this case, the user can get the spring context, get the bean, and invoke the method.
Use the tt command to record the invocation of the specified method
tt
is TimeTunnel, which records the parameters and return value of each invocation of the specified method.
tt -t org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter invokeHandlerMethod
{{execute T2}}
Visit: https://HOST_SUBDOMAIN-80-KATACODA_HOST.environments.katacoda.com/user/1
You can see that the tt
command record an invocation:
$ tt -t org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdaptePress Q or Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 252 ms.
INDE TIMESTAMP COST( IS-R IS- OBJECT CLASS METHOD
X ms) ET EXP
-----------------------------------------------------------------------------------------
1000 2019-02-15 4.583 true fal 0xc93cf1a RequestMappingHand invokeHandlerMethod
15:38:32 923 se lerAdapter
Use the tt command to get the spring context from the invocation record.
Type Q
{{execute T2}} or Ctrl + C
to exit the tt -t
command above.
tt -i 1000 -w 'target.getApplicationContext()'
{{execute T2}}
$ tt -i 1000 -w 'target.getApplicationContext()'
@AnnotationConfigEmbeddedWebApplicationContext[
reader=@AnnotatedBeanDefinitionReader[org.springframework.context.annotation.AnnotatedBeanDefinitionReader@2e457641],
scanner=@ClassPathBeanDefinitionScanner[org.springframework.context.annotation.ClassPathBeanDefinitionScanner@6eb38026],
annotatedClasses=null,
basePackages=null,
]
Affect(row-cnt:1) cost in 439 ms.
Get the spring bean and invoke method
tt -i 1000 -w 'target.getApplicationContext().getBean("helloWorldService").getHelloMessage()'
{{execute T2}}
The result is:
$ tt -i 1000 -w 'target.getApplicationContext().getBean("helloWorldService").getHelloMessage()'
@String[Hello World]
Affect(row-cnt:1) cost in 52 ms.