如何使用常见的webappclassloader为tomcat中的所有webapps自定义webapp类加载器?
我看到我可以扩展类加载器并将其添加到每个webapp的上下文标记中,有没有办法将它作为所有webapps的通用类加载器以及我应该放置这个类加载器.class文件的位置?
由于
答案 0 :(得分:2)
您可以将自定义类加载器放在$CATALINA_HOME/lib
。
要替换所有webapps的默认加载器,一个方便的解决方案是修改$CATALINA_HOME/conf/context.xml
<?xml version='1.0' encoding='utf-8'?>
<Context>
<Loader className="test.loader.MyWebappLoader" /><!-- add this element -->
</Context>
以下是示例代码:
package test.loader;
import org.apache.catalina.loader.WebappLoader;
public class MyWebappLoader extends WebappLoader {
public MyWebappLoader() {
System.err.println("!! create MyWebappLoader !!");
}
public MyWebappLoader(ClassLoader parent) {
super(parent);
System.err.println("!! create MyWebappLoader !!");
}
}
有关详细信息,请参阅Tomcat document - The Loader Component。它适用于Tomcat 7~9。