为所有 webapps 定制 webapp class loader
To customize the webapp class loader for all the webapps
如何使用通用的 webappclassloader 为 tomcat 中的所有 webapp 自定义 webapp class loader?
我看到我可以扩展 class 加载程序并将其添加到每个 web 应用程序的上下文标记中,有没有办法将它作为所有 web 应用程序的通用 class 加载程序和还有我应该把这个 classloader .class 文件放在哪里?
谢谢
您可以将自定义 class 加载器放在 $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。
如何使用通用的 webappclassloader 为 tomcat 中的所有 webapp 自定义 webapp class loader?
我看到我可以扩展 class 加载程序并将其添加到每个 web 应用程序的上下文标记中,有没有办法将它作为所有 web 应用程序的通用 class 加载程序和还有我应该把这个 classloader .class 文件放在哪里?
谢谢
您可以将自定义 class 加载器放在 $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。