java - 跨 JVM 检测

标签 java bytecode instrumentation dynatrace

我正在花一些时间使用 DynaTrace。 它与跨 jvm 检测相关的功能给我留下了深刻的印象。 简而言之,DynaTrace 能够使用一些统计信息来检测创建跟踪的 Java 代码。这不是什么新鲜事。 有一个非常有趣的功能:当执行对外部 JVM 的调用时,DynaTrace 能够将此新跟踪链接到调用者(即远程 session bean、Web 服务、远程 RMI 等)。 怎么可能? 我无法想象如何实现这个功能?有什么想法吗?

谢谢

最佳答案

Dynatrace 实际上并不依赖于来自 Bean 的信息。正如您在问题中正确所说的那样 - 我们正在使用字节码工具,例如市场上的其他工具。我们检测某些框架的关键方法,例如:Servlet、Axis、JMS、JDBC... 在使用例如基于 HTTP 的通信从一个 JVM 向另一个 JVM 进行调用的场景中,我们会检测 HTTP 请求的发送端以及另一个 JVM 上的接收端。在发送端,我们附加一个带有当前 PurePath ID 的附加 HTTP header 。 PurePath 是我们的专利技术。因此,每笔 PurePath(=每笔交易)都会获得一个唯一的 ID。该 ID 随请求“移动”,例如:我们将其作为 HTTP HEader 放在 HTTP 请求上。在接收端(您的第二个 JVM),我们检查该 HTTP HEader,因此知道我们收集的所有数据都属于该 PurePath。这使我们能够进行真正的端到端跟踪,而无需依赖 Bean 之类的东西,也无需基于时间戳等关联这些数据

有道理吗? 如果您有更多问题,请告诉我。我还录制了一些视频放在YouTube上来解释技术和产品本身:http://bit.ly/dttutorials

关于java - 跨 JVM 检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27599802/

相关文章:

python - Python 的类闭包是如何工作的?

javascript - 检测类的静态方法和实例方法的参数和返回值

java - 连接 MySQL 数据库中的对象

java - 如何将参数传递给 PowerShell 脚本内的命令?

java - 内部服务之间的速率限制

java - OSGi 容器 KARAF 中的仪表

c - 检测命令行参数

java - 如何解决java.util.NoSuchElementException?

java - icont_x 的用途

python - 为什么 Python CONTINUE LOOP 允许外循环,而 BREAK LOOP 不允许?