2017-04-08 178 views
1

我想使用Javassist在servelets上执行字节码检测,但挑战在于,无论使用什么工具,它都不会反映在Tomcat类中。我可以清楚地看到这是类加载器的问题,但我甚至无法使用自定义类加载器。我试图寻找任何这方面的例子,但找不到任何例子。你有没有关于如何让Tomcat与Javassist协同工作的例子?我如何使Javassist与Tomcat一起工作

+1

你确定你正在连接你的代理到tomcat吗? – rakwaht

回答

1

我假设你使用ClassPool.getDefault()为了在Tomcat上运行你的例子。这不适用于应用程序服务器不在类路径上运行。

为了向Javassist通知特定应用程序的类,您需要附加当前类加载器的类。您可以通过将LoaderClassPath的实例附加到引用应用程序的类加载器的当前类池来完成此操作。

+0

嗨拉斐尔,下面是我在做什么,这是加载classpool的正确方法? ClassPool parent = ClassPool.getDefault(); ClassPool cp = new ClassPool(parent); cp.insertClassPath(new ClassClassPath(this.getClass())); ClassLoader cl = Thread.currentThread()。getContextClassLoader(); cp.insertClassPath(new LoaderClassPath(cl)); –