用javaagent获取Web应用程序类?

时间:2015-06-17 13:27:13

标签: java instrumentation javassist

有没有办法检索Web应用程序加载的类或类加载器?

例如,如果我使用此代码:

ClassLoader c=getClass().getClassLoader();
logmsg("c="+c);
URLClassLoader u=(URLClassLoader)c;
URL[] urls=u.getURLs();
for (URL i : urls) {
    logmsg("url: "+i);
}

我得到代理商使用的图书馆而不是网络应用程序

1 个答案:

答案 0 :(得分:0)

查看Reflections包。它使用javassist来提供运行时类元数据查找。为了找到正确的类路径URL,它提供了一个帮助程序类ClasspathHelper。 ClasspathHelper提供了几个静态方法,它们通过传递目标WebApp的ServletContext来返回WebApps的URL:

static URL forWebInfClasses(javax.servlet.ServletContext servletContext)
static Set<URL> forWebInfLib(javax.servlet.ServletContext servletContext)