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