【发布时间】:2016-10-05 10:45:12
【问题描述】:
有没有办法在 Java 8、Tomcat 8 或 Spring Boot 中打印出与给定对象实例关联的每个事件的列表?这对调试非常有帮助。
例如,我希望能够指定一个类型并获取该类型的所有对象。而且我希望能够打印出给定对象发生的所有事件,例如实例化、属性值更改、函数调用、销毁等。
我想研究的一个类型的例子是HttpSession。如果我使用System.out.println()如下查询当前HttpSession:
HttpSession sess = request.getSession(false);
System.out.println("request.getSession(false) is: " + sess);
String sessid = sess.getId();
System.out.println("session.getId() is: "+sessid);
结果是以下两行输出:
request.getSession(false) is: org.apache.catalina.session.StandardSessionFacade@68b26b9
session.getId() is: D490BB6B29E66D35205578D7C1E4B3EE
这给出了类型org.apache.catalina.session.StandardSessionFacade、对象引用68b26b9和id属性D490BB6B29E66D35205578D7C1E4B3EE。
此 OP 询问如何获取 JVM 或 Tomcat 或 Spring 使用此特定对象实例 org.apache.catalina.session.StandardSessionFacade@68b26b9 执行的每个事件的历史日志,从出生到死亡。以及如何为任何其他给定对象获取相同类型的历史日志。 类似于堆栈跟踪,但跨越整个对象生命周期,而不是局限于单个事件。
【问题讨论】:
标签: java spring tomcat servlets spring-boot