背景
同一个类加载器对同一个类只加载一次,如果类加载器已经加载到这个类,再遇到相同的类文件,则进行忽略;利用这个特性,从而实现对其他jar包中的类进行覆盖,从而实现项目的定制化;
配置方式
如果需要让Tomcat8优先加载指定的jar包,需要进行以下配置
在tomcat目录下,conf/context.xml中的标签内增加以下配置
<Resources>
<PreResources className="org.apache.catalina.webresources.FileResourceSet"
base="jar包文件绝对路径"
webAppMount="jar包文件相对项目根目录路径" />
</Resources>
配置示例
优先加载test1-1.0-SNAPSHOT.jar和test2-1.0-SNAPSHOT.jar两个jar包,
<Resources>
<PreResources className="org.apache.catalina.webresources.FileResourceSet"
base="/home/webroot/testweb/WEB-INF/lib/test1-1.0-SNAPSHOT.jar"
webAppMount="/WEB-INF/lib/test1-1.0-SNAPSHOT.jarr" />
<PreResources className="org.apache.catalina.webresources.FileResourceSet"
base="/home/webroot/testweb/WEB-INF/lib/test2-1.0-SNAPSHOT.jar"
webAppMount="/WEB-INF/lib/test2-1.0-SNAPSHOT.jar" />
</Resources>