如何使用通用的webappclassloader为tomcat中的所有webapp自定义webapp类加载器?

我看到我可以扩展类加载器并将其添加到每个Webapp的context标签中,是否有办法将其作为所有webapp的通用类加载器,以及该类加载器.class文件的放置位置?

谢谢

最佳答案

您可以将自定义类加载器放置在$CATALINA_HOME/lib中。

要替换所有Web应用程序的默认加载器,一种便捷的解决方案是修改$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上运行。

09-04 20:57