我正在尝试检测我的应用程序以监视连接池。我们使用 apache commons pool 1.6 进行连接池,所有应用程序都部署在同一个 AS 上(我们使用 Jboss EAP 6)。跟踪脚本有效,但它会在同一 AS 上的所有应用程序中调用池方法时触发。
有一种方法可以让我的脚本挂钩池方法仅在选定的应用程序中调用?
我正在尝试检测我的应用程序以监视连接池。我们使用 apache commons pool 1.6 进行连接池,所有应用程序都部署在同一个 AS 上(我们使用 Jboss EAP 6)。跟踪脚本有效,但它会在同一 AS 上的所有应用程序中调用池方法时触发。
有一种方法可以让我的脚本挂钩池方法仅在选定的应用程序中调用?
BTrace 在 JVM 级别工作。因此,默认情况下,它不知道在同一个 JVM 上运行的多个应用程序。
通常,仅探测应用服务器中托管的一个应用程序并不容易。如果您能够识别作为每个应用程序入口点的方法,并且后续请求在同一线程(或从原始线程递归启动的线程)上进行,您可以使用ThreadLocal
或InheritableThreadLocal
存储应用程序标识。
@TLS
BTrace 通过注释仅直接支持前一个- 因为InheritableThreadLocal
您将不得不使用不安全/受信任的模式,其中 BTrace 安全保证检查将被关闭。