【问题标题】:Get Stack Traces for J2EE Http requests in Real Time实时获取 J2EE Http 请求的堆栈跟踪
【发布时间】:2015-11-26 07:10:06
【问题描述】:

当 HTTP 请求到达服务器时,我想在运行时捕获完整的堆栈跟踪,然后将它们保存在数据库中以用于其他目的。我刚刚尝试了 jstack 和 visualvm,但我无法为 http 请求映射堆栈跟踪。

堆栈跟踪应该像this

我的要求示例:

一些用于登录的 Http 请求(webservice 或 servlet) --> 一个线程在 Tomcat 的 JVM 中启动 ---> 在运行时从该线程捕获它的堆栈跟踪

注意:我需要一些可以实时捕获所有http请求的堆栈跟踪的java代码/jar/工具

【问题讨论】:

    标签: tomcat jakarta-ee httprequest real-time stack-trace


    【解决方案1】:

    我想Thread.getAllStackTraces 可以解决您的问题。

    PS

    当然你可以添加一些过滤器来排除不必要的线程

    【讨论】:

    • 如果我用它来获取所有堆栈跟踪,那么它不是实时的吗?将有 100 位用户使用我的 Web 应用程序,他们会遇到不同的请求,我的要求是每当对我的 Web 应用程序有请求时,我必须捕获它/记录它的完整堆栈跟踪。
    • 据我所知,您必须将堆栈跟踪与 HTTP 请求绑定。最简单的方法是更改​​线程名称。您可以使用 HTTP 过滤器。在启动业务逻辑之前,它应该将线程名称设置为特定的字符串,并在稍后重置名称。
    • 好的,明白了..是否可以在不触及 webapp 代码库的情况下获取堆栈跟踪,我只想运行一个独立的 java 代码或 jar 并获取所有堆栈跟踪?
    • 是的,您可以从不同的 Web 应用程序调用 Thread.getAllStackTraces。但是如果你想更改线程名称,那么过滤器必须位于原始 webapp 中。
    • 好的,谢谢尼克...我会检查一下,然后勾选答案
    猜你喜欢
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 2017-02-21
    相关资源
    最近更新 更多