tomcat context.xml文件配置<Loader delegate="true" />
默认不写 参数 是 <Loader delegate="false" />
tomcat context.xml文件配置<Loader delegate="true" />作用?
网上很多人说: Loader对象可出现在Context中以控制Java类的加载。属性:delegate、含义:True代表使用正式的Java代理模式(先询问父类的加载器);false代表先在Web应用程序中寻找。默认值:FALSE
首先,你需要了解一下JVM的Classloader机制(详细请自行google之)。
简而言之,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的话,这就有可能会导致很多奇怪的问题。
分享到:
相关推荐
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> ``` 5. 代码示例: 在项目中,你可能会有一个名为"webworkspringibatis"的模块或包,其中包含了这些配置的...
# KZH-Lottery ###功能实现: * 随机抽奖闪动效果 * 引入数字指定中奖位置 ###技术要点: ...* 每次调用定时器递增当前时间,通过减结束时间控制递减...NSLog(@"delegate====>抽到了第%ld个",count); } </code></pre>
/// <summary> /// 板卡类型 /// </summary> public enum BOARD_TYPE_DS : uint { DS400XM = 0, //M卡 DS400XH = 1, //H卡 DS4004HC = 2, //4004HC DS4008HC = 3, //4008HC DS4016HC = 4, //4016HC DS...
《TongWeb主配置文件tongweb.xml详解》 TongWeb是一款基于Java技术的高性能、高可用的企业级应用服务器,其核心配置文件——tongweb.xml,是TongWeb运行时的重要配置中心,用于定义服务器的行为、管理应用程序的...
/// <param name="text"></param> private void AppString(sendData sendDatas) { int i = forms(sendDatas.fromIP); if (arryFrom[i].Forms.InvokeRequired == true) { arryFrom[i].Forms.Invoke...
通过comet实现了一个聊天功能。 1.需要在tomcat的server.xml里面配置 <Connector port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" ...<Loader delegate="true"/>
<p><a href="#" id="start">Start Animation</a></p> <div id="box" style="background:#98bf21;height:100px;width:100px;position:relative"> </div> </body> </html> jQuery 隐藏和显示 通过 hide() 和 show...
<class-loader delegate="false"/> <!-- Additional InforSuite specific configurations --> </inforsuite-web-app> ``` `web.xml`示例: ```xml <?xml version="1.0" encoding="UTF-8"?> <web-app ...
`weblogic.xml`遵循J2EE的部署描述符规范,其基本结构包括`<weblogic-web-app>`根元素,以及一系列子元素如`<context-root>`、`<session-descriptor>`、`<class-loader>`等。这些元素定义了应用程序的上下文根、...
查询出列表,也就是返回list, 在我们这个例子中也就是 List<User> , 这种方式返回数据,需要在User.xml 里面配置返回的类型 resultMap, 注意不是 resultType, 而这个resultMap 所对应的应该是我们自己配置的 ...
/// <summary> /// SerialPort的封装 /// </summary> public class SerialPortUitls { /// <summary> /// 串口对象 /// </summary> public SerialPort serialPort = null; /// <summary> /// 读取状态 /...
*/</template><template autoinsert="true" context="typecomment_context" deleted="false" description="创建的类型的注释" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.typecomment" name=...
//执行回调函数<br> }<br> }<br>}<br><br>//调用<br>class DelegateApp<br>{<br> public static void ActiveConncetionCallback(DBConnection connection) //处理函数<br> {<br> ...<br> }<br><br> public void ...
- (void)sharer:(id<FBSDKSharing>)sharer didCompleteWithResults:(NSDictionary<NSString *, id> *)results { NSLog(@"分享完成"); } - (void)sharer:(id<FBSDKSharing>)sharer didFailWithError:(NSError *)...
解决方法:Tomcat安装文件context.xml里的Context标签中添加<Loader delegate="true" />即可解决该问题。 java.lang.NoSuchMethodError: org.apache.catalina.connector.RequestFacade.doUpgrade(Lorg/apache/...
<true/> </dict> ``` 现在,实现授权过程。通常在用户首次打开应用或者需要访问Facebook权限时调用登录API: ```objc FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init]; [loginManager ...
在资源文件中,为日夜模式提供不同的颜色、图片等资源,如在`res/values-night`目录下创建对应的XML文件。这样,当系统处于夜间模式时,Android会自动加载`night`目录下的资源。 文件`AndroidDayNightSample(jb51...
XMLParser在iOS开发中是一种常用的解析XML数据的工具,它允许开发者将XML文件转换为可操作的数据结构,便于在iPhone应用程序中使用。XML(Extensible Markup Language)是一种标记语言,常用于存储和传输结构化数据...
- **表单**:`<form>`、`<input>`、`<select>` 等元素可以被自动增强,提供触摸友好的界面。 - **工具栏**:`<div data-role="header">` 和 `<div data-role="footer">` 创建头部和底部栏。 - **对话框**:`<div ...
/// <summary> /// 定义委托类型 /// </summary> public delegate void DelegateMainUI(); /// <summary> /// 定义委托事件 /// </summary> private event DelegateMainUI FreshMainUI; /// <summary> /// 添加...