【问题标题】:How to add tracing to Java server application如何向 Java 服务器应用程序添加跟踪
【发布时间】:2014-02-18 06:55:18
【问题描述】:

假设我有一个我不理解的 Java 服务器应用程序。我想知道请求处理的整个执行顺序(见下例)

从客户端 (...) 收到带有标头 (...) 和正文 (...) 的 HttpRerquest 12345 使用 HttpRequest 12345 输入 WebUserController 使用 HttpRequest 12345 输入 UserProcessor.process1 使用 createUserRequest(userName=..., userEmail=..., ...) 输入 UserProcessor.process2 使用 User(userName=..., userEmail=..., ...) 输入 userDAO.createUser 在 :: 中针对数据库 (...) 调用 SQL 语句 (...) 以结果退出 userDAO.createUser (...) 使用 (...) 退出 UserProcessor.process2 使用 (...) 退出 UserProcessor.process1 退出 WebUserController ... 将 HttpResponse 7890 发送到客户端 (...) 与标头 (...) 和正文 (...)

我知道只有一种方法可以得到它:手动将跟踪调用添加到应用程序代码。现在我想知道是否有一种 自动 方法可以将这些跟踪调用添加到代码中。我正在考虑 byte 检测,它将跟踪调用添加到给定 jar 中所有公共类的所有公共方法。有意义吗?

您能否建议任何其他方式来了解该应用程序的工作原理?

【问题讨论】:

  • 你绝对应该看看面向方面的编程 (en.wikipedia.org/wiki/Aspect-oriented_programming)。
  • @Smutje - 你也应该手动添加方面吗?
  • 就我而言,如果您可以自动识别 AOP 切入点(即每个方法的入口和出口点),您不必手动执行此操作,而是将其自动化(附加好处:您不必用切入点定义污染您的业务代码)。很快找到了一篇关于AOP和Spring的文章:marxsoftware.blogspot.de/2008/10/…
  • @Michael 你说的有道理,你会使用什么工具来自动完成所有公共方法的检测?我知道这在运行时提供了一些概述:kenai.com/projects/btrace/pages/Home
  • @Michael 正如 Smutje 所说,AOP 可以成为解决方案,我认为这可能是您正在寻找的:stackoverflow.com/questions/8839077/…(有问题的用户的名字也是 Michael :P )。如果解决方案有效,请分享

标签: java trace maintenance


【解决方案1】:

如果是开发服务器,您也可以尝试将您的 IDE 连接到服务器的调试端口。这样,您就可以从设置断点的位置逐行跟踪代码。

如果您谈论的是验收服务器或生产服务器,这绝对是不可行的,因为您会阻止所有其他线程执行相关代码。

如果您需要记录每条语句,那么 AOP 将是您最好的朋友,正如 Smutje 所述。

【讨论】:

    【解决方案2】:

    您可以尝试Jackplay,它旨在无需编码或重新部署即可启用跟踪。

    它将 Web UI 呈现为您的控制面板,以跟踪或撤消对您的方法的跟踪。

    它还允许您在 JVM 中重新定义方法体。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-22
      • 2012-09-25
      相关资源
      最近更新 更多