tomcat的contex.xml中添加<Loader delegate="true"/>的作用
来源:互联网 发布:部落冲突巨石投手数据 编辑:程序博客网 时间:2024/06/05 19:06
简而言之,JVM的classloader加载继承关系分为BootstarpClassLoader --> ExtClassLoader --> SystemClassLoader,应用的WebAppClassLoader继承自SystemClassLoader,在加载具体某个类时,一般会先委托给父类ClassLoader,当父类ClassLoader无法加载成功时,才会再由子类ClassLoader尝试加载,这就是所谓的delegate机制。
其次,Tomcat在jvm的ClassLoader机制上增加了几个继承层次。
SystemClassLoader --> CommonClassLoader -->(ServerClassLoader | SharedClassLoader --> WebAppClassLoader)。
CommonClassLoader用来加载${CATALINA_HOME}/conf/catalina.properties中common.loader配置目录下的类文件,一般是用来加载${CATALINA_HOME}/lib下的文件。该loader加载的类为tomcat服务器和tomcat下面的所有webApp所共享。
ServerClassLoader用来加载${CATALINA_HOME}/conf/catalina.properties中server.loader配置目录下的类文件,一般是用来加载${CATALINA_HOME}/server下的文件。该loader加载的类为tomcat服务器所独有核心类,tomcat下面的WebApp无法访问。
SharedClassLoader用来加载${CATALINA_HOME}/conf/catalina.properties中shared.loader配置目录下的类文件,一般是用来加载${CATALINA_HOME}/shared下的文件。该loader加载的类为tomcat下面的所有webApp所共享。
WebAppClassLoader用来加载${CATALINA_HOME}/webapps/目录下每个WebApp应用的/WEB-INF/class,/WEB-INF/lib的类文件,每个WebApp对应一个WebAppClassLoader,用来加载其所需要的类文件。
最后,说一下delegate配置的意义。
True,表示tomcat将遵循JVM的delegate机制,即一个WebAppClassLoader在加载类文件时,会先递交给SharedClassLoader加载,SharedClassLoader无法加载成功,会继续向自己的父类委托,一直到BootstarpClassLoader,如果都没有加载成功,则最后由WebAppClassLoader自己进行加载。
False,表示将不遵循这个delegate机制,即WebAppClassLoader在加载类文件时,会优先自己尝试加载,如果加载失败,才会沿着继承链,依次委托父类加载。
在此说一下配置为False需要注意的问题:一旦配置为False,如果你在WebApp中自己定义了一个java.lang.String,则这个String类会有可能覆盖掉jdk中的String类,这也许不是你想要的结果。另外对于多个WebApp公用jar包,你可能会放到${CATALINA_HOME}/shared目录中共享,但是一不小心在应用的/WEB-INF/lib中也包含了一个同名的但版本不一致的jar的话,这就有可能会导致很多奇怪的问题。
- tomcat的contex.xml中添加<Loader delegate="true"/>的作用
- Tomcat中的Context.xml的<Loader delegate="true"/>
- tomcat context.xml文件配置<Loader delegate="true" />作用
- tomcat context.xml文件配置<Loader delegate="true" />作用
- tomcat context.xml文件配置<Loader delegate="true" />作用
- tomcat context.xml文件配置<Loader delegate="true" />作用
- Tomcat Context.xml添加<Loader delegate="true"/>
- <Loader delegate="true"/>
- ecshop中define('IN_ECS', true)的作用
- ecshop中define('IN_ECS', true)的作用
- ajax中async true/false的作用
- tomcat 中 web.xml server.xml context.xml tomcat-users.xml 的区分作用
- <jsp:include page="" flush="true" /> 中flush="true 的作用
- mysql 连接url中useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true 的作用
- AndroidManifest.xml中android:largeHeap="true"作用
- UpdateData(true)的作用
- tomcat中sessionid跨域名的问题emptySessionPath="true"
- tomcat的server.xml配置文件中三个端口的作用
- java Object类
- 寻找字符串最长不重复的子串
- Google浏览器安装&使用
- 2018年有哪些免费信息发布平台多人用?
- 在windows下MySQLdb/MySQL-python的安装
- tomcat的contex.xml中添加<Loader delegate="true"/>的作用
- Flume_Source
- 彻底搞懂CNN
- 飞岩-免費Chrome插件VPN
- 在线报表设计实战系列 – ⑥矩表高级应用
- ActiveMQ之简单测试代码
- 高德mapview.getmap 为空
- 我认为是最简单的c++实现线性表中顺序表相关过程
- Nginx 安装