我正在尝试使用自定义类加载器进行练习,并且有一些问题。有没有办法表明JVM全局使用我的自定义类加载器?例如,我编写了一个在Tomcat 6下运行的小型应用程序。servlet由容器管理,我应该在哪里设置类加载器?此外,该Web应用程序使用了一些3rd party jars,我可以控制这些jars的类加载吗?
对于独立应用程序,以上答案是否会有所不同?
谢谢!
您可以将系统默认的类加载器设置为JVM参数:
java -Djava.system.class.loader =com.test.YourCustomClassLoader com.test.YourMainClass
由于Tomcat是作为Java应用程序启动的,因此您也可以在%TOMCAT_HOME%\bin\run.bat或$TOMCAT_HOME/bin/run.sh可执行文件上设置此参数。
%TOMCAT_HOME%\bin\run.bat
$TOMCAT_HOME/bin/run.sh
编辑完成: 如果将您的类加载器设置为系统类加载器,它将用于加载Tomcat组件类,不同的库以及您自己的类。如果希望仅将类加载器用于应用程序类(包括库等),则应Loader为上下文配置一个元素。必须在Context元素内部定义Loader元素,并且可以在context.xml文件中定义。更多信息:
Loader
Context
context.xml