我如何让 Javassist 与 Tomcat 一起工作

How I can make Javassist work with Tomcat

我想使用 Javassist 在 servelet 上执行字节码检测,但挑战在于,无论我做了什么检测,它都没有反映在 Tomcat classes 中。我可以清楚地看到这是 class 加载器的问题,但我什至不能让它与自定义 class 加载器一起工作。我尝试搜索有关此的任何示例,但找不到任何示例。关于我们如何使 Tomcat 与 Javassist 一起工作,您有任何示例吗?

我假设您使用 ClassPool.getDefault() 是为了 运行 您在 Tomcat 上的示例。这将不起作用,因为应用程序服务器不在 class 路径上 运行。

为了通知 Javassist 特定应用程序的 classes,您需要附加当前 class 加载程序的 classes。您可以通过将 LoaderClassPath 的实例附加到引用您应用程序的 class 加载器的当前 class 池来实现。