我有一个包含大约 30 个 jar 的类路径目录。在我的普通控制台应用程序中,我正在创建一个我用指向所有这些 jarURLClassLoader
的 s 列表初始化它的位置。URL
URL[] urls = new URL[] {
new URL("jar:file:/D:/Work/temp/jars/antlr-2.7.7.jar!/"),
new URL("jar:file:/D:/Work/temp/jars/aopalliance-1.0.jar!/"),
new URL("jar:file:/D:/Work/temp/jars/c3p0-0.9.1.jar!/"),
...
}
URLClassLoader cl = new URLClassLoader(urls, getClass().getClassLoader());
Class<?> c = cl.loadClass(...);
etc...
像这样一切正常,从我的URLClassLoader
.
现在我采用这段代码并使其在 Tomcat 下运行,例如在 servlet 中的一个简单 Web 请求触发doGet()
。令人惊讶的是,加载平均类所需的时间延长了 10-15 倍,使得整个初始化时间无法接受。该问题至少适用于 Tomcat 版本 6 和 7。
有任何想法吗?