为所有webapps

时间:2016-11-25 04:35:01

标签: tomcat classloader

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

我看到我可以扩展类加载器并将其添加到每个webapp的上下文标记中,有没有办法将它作为所有webapps的通用类加载器以及我应该放置这个类加载器.class文件的位置?

由于

1 个答案:

答案 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。