- 浏览: 420855 次
- 性别:
- 来自: 济南
文章分类
最新评论
-
pmh905001:
写的很详尽,感谢!
解析jvm.dll和java.exe -
Bll:
插得真深啊,我的是(eclipse_j2ee_juno):F: ...
在eclipse里jsp编译后的java和class文件的位置 -
heming_way:
谢谢,对我很有用,解答了我对多值依赖的疑问
关于多值依赖--范式! -
JavaStudy2011:
java语言解析xml文件 -
vrussell:
Thanks man, it helps me a lot!
获得IEditorPart和IDocument
Tomcat的启动是从解析bat文件开始,bat文件最终调用org.apache.catalina.startup.Bootstrap开始类的加载。
这是org.apache.catalina.startup.bootstrap;的代码
初始化Classloader的一个过程
如果跟踪看createClassLoader
调用自身的方法 createClassLoader,最终是执行ClassloaderFactory的方法
parent就是上面传递的commLoader
其实他们的parent的class是org.apache.catalina.loader.standardClassLoader
只是他们的名字是 上面的名字
例如 commentloader加载的类 getClassLoader是stanardClassLoader
standardClassLoader是URLClassloader的子类
(URLClassloader是java.security.SecureClassLoader的子类,java.security.SecureClassLoader
是Classloader的子类 java.security.SecureClassLoader扩展了Classloader,他还可以支持使用相关的代码源和权限定义类)
+---------------------------+
| Bootstrap |
| | |
| System |
| | |
| Common |
| / \ |
| Catalina Shared |
+---------------------------+
下面是各自的只能
- Bootstrap -
载入JVM自带的类和$JAVA_HOME/jre/lib/ext/*.jar
- System
1.载入$CATALINA_HOME/bin/bootstrap.jar 初始化Tomcat,执行Main方法
2. $JAVA_HOME/lib/tools.jar Sun的工具类,包括编译Jsp为Servlet的工具类
- Common
这个目录下的类虽然对TOMCAT和所有的WEB APP都可见.但是Web App的类不应该 放在这个目录下,所有未打包的Class都在$CATALINA_HOME/common/classes下,所
有打包的jar都在 $CATALINA_HOME/commons/endorsed $CATALINA_HOME/common/lib下,默认情况会 包含以下几个包:
1. jndi.jar JNDI API接口,这个包仅在Java1.2时候装入,1.3以后的版本JDK已
自动装入.
2. naming-common.jar JNDI接口实现类,Tomcat用这些类在内存中使用Context.
3. naming-resources.jar JNDI实现,Tomcat用它们定位Web App的静态资源.
4. servlet.jar Servlet,Jsp API
5. xerces.jar XML解析器,特定的Web App可以在自己的/WEB-INF/lib 中覆盖.
- Catalina
装入Tomcat实现所有接口的类,这些类对Web App是完全不可见的,所有未打包的类在 $CATALINA_HOME/server/classes所有jar包在$CATALINA_HOME/server/lib下.一 般情况该ClassLoader将Load下面几个包:
1. catalina.jar Servlet容器的Tomcat实现包
2. jakarta-regexp-X.Y.jar 正则表达式,请求过滤时使用
3. servlets-xxxxx.jar Servlet支持包
4. tomcat-coyote.jar Tomcat的Coyote连接实现包
5. tomcat-jk.jar Web Server绑定包,允许Tomcat绑定Apache等作为Web Server
6. tomcat-jk2.jar 功能同上
7. tomcat-util.jar Tomcat工具类,可能被一些Connector用到
8. tomcat-warp.jar 用于Apache Server包
- Shared
载入所有WEB APP都可见的类,对TOMCAT不可见. 所有未打包的类在
$CATALINA_HOME/shared/classes所有jar包在$CATALINA_HOME /lib下.
默认情况包含下面几个包:
1. jasper-compiler.jar Jsp编译器,编译Jsp为Servlet
2. jasper-runtime.jar Jsp(已编译成Servlet)运行支持包
3. naming-factory.jar 支持Web App使用JNDI的封装包-WebAppX Web App ClassLoader,当Web App被部署是该ClassLoader被创建.所有class都在 WEB-INF/classes下,所有jar在WEB-INF/lib下.
特别注意WEB APP自己的ClassLoader的实现与众不同:
它先试图从WEB APP自己的目录里载入,如果失败则请求父ClassLoader的代理
这样可以让不同的WEB APP之间的类载入互不干扰.另,Tomcat Server使用的是Catalina
ClassLoader,一般的Web App使用的是WebApp ClassLoader.
commonLoader = createClassLoader("common", null); if(commonLoader == null) commonLoader = getClass().getClassLoader(); catalinaLoader = createClassLoader("server", commonLoader); sharedLoader = createClassLoader("shared", commonLoader);
这是org.apache.catalina.startup.bootstrap;的代码
初始化Classloader的一个过程
如果跟踪看createClassLoader
调用自身的方法 createClassLoader,最终是执行ClassloaderFactory的方法
if(parent == null) classLoader = new StandardClassLoader(array); else classLoader = new StandardClassLoader(array, parent); return classLoader;
parent就是上面传递的commLoader
其实他们的parent的class是org.apache.catalina.loader.standardClassLoader
只是他们的名字是 上面的名字
例如 commentloader加载的类 getClassLoader是stanardClassLoader
standardClassLoader是URLClassloader的子类
(URLClassloader是java.security.SecureClassLoader的子类,java.security.SecureClassLoader
是Classloader的子类 java.security.SecureClassLoader扩展了Classloader,他还可以支持使用相关的代码源和权限定义类)
+---------------------------+
| Bootstrap |
| | |
| System |
| | |
| Common |
| / \ |
| Catalina Shared |
+---------------------------+
下面是各自的只能
- Bootstrap -
载入JVM自带的类和$JAVA_HOME/jre/lib/ext/*.jar
- System
1.载入$CATALINA_HOME/bin/bootstrap.jar 初始化Tomcat,执行Main方法
2. $JAVA_HOME/lib/tools.jar Sun的工具类,包括编译Jsp为Servlet的工具类
- Common
这个目录下的类虽然对TOMCAT和所有的WEB APP都可见.但是Web App的类不应该 放在这个目录下,所有未打包的Class都在$CATALINA_HOME/common/classes下,所
有打包的jar都在 $CATALINA_HOME/commons/endorsed $CATALINA_HOME/common/lib下,默认情况会 包含以下几个包:
1. jndi.jar JNDI API接口,这个包仅在Java1.2时候装入,1.3以后的版本JDK已
自动装入.
2. naming-common.jar JNDI接口实现类,Tomcat用这些类在内存中使用Context.
3. naming-resources.jar JNDI实现,Tomcat用它们定位Web App的静态资源.
4. servlet.jar Servlet,Jsp API
5. xerces.jar XML解析器,特定的Web App可以在自己的/WEB-INF/lib 中覆盖.
- Catalina
装入Tomcat实现所有接口的类,这些类对Web App是完全不可见的,所有未打包的类在 $CATALINA_HOME/server/classes所有jar包在$CATALINA_HOME/server/lib下.一 般情况该ClassLoader将Load下面几个包:
1. catalina.jar Servlet容器的Tomcat实现包
2. jakarta-regexp-X.Y.jar 正则表达式,请求过滤时使用
3. servlets-xxxxx.jar Servlet支持包
4. tomcat-coyote.jar Tomcat的Coyote连接实现包
5. tomcat-jk.jar Web Server绑定包,允许Tomcat绑定Apache等作为Web Server
6. tomcat-jk2.jar 功能同上
7. tomcat-util.jar Tomcat工具类,可能被一些Connector用到
8. tomcat-warp.jar 用于Apache Server包
- Shared
载入所有WEB APP都可见的类,对TOMCAT不可见. 所有未打包的类在
$CATALINA_HOME/shared/classes所有jar包在$CATALINA_HOME /lib下.
默认情况包含下面几个包:
1. jasper-compiler.jar Jsp编译器,编译Jsp为Servlet
2. jasper-runtime.jar Jsp(已编译成Servlet)运行支持包
3. naming-factory.jar 支持Web App使用JNDI的封装包-WebAppX Web App ClassLoader,当Web App被部署是该ClassLoader被创建.所有class都在 WEB-INF/classes下,所有jar在WEB-INF/lib下.
特别注意WEB APP自己的ClassLoader的实现与众不同:
它先试图从WEB APP自己的目录里载入,如果失败则请求父ClassLoader的代理
这样可以让不同的WEB APP之间的类载入互不干扰.另,Tomcat Server使用的是Catalina
ClassLoader,一般的Web App使用的是WebApp ClassLoader.
发表评论
-
IE中的条件编译
2011-10-30 18:53 2084引用条件编译介绍 在IE有一个几乎没人知道的特性--“条件编 ... -
ClientAbortException: java.net.SocketException: Connection reset by peer: socke
2011-10-13 14:25 1描述下问题 tomcat报错 ClientAbortExc ... -
(转)实现Ajax请求队列按顺序执行
2011-10-07 10:23 5510摘自http://www.ilovejs.net/archiv ... -
关于无法delete文件
2011-09-26 17:12 1428File f=new File(targetDir+&qu ... -
firefox上传文件
2011-09-23 15:19 2194先看一个实例: jsp <tr class=" ... -
HTML标签的<button>导致数据在firefox自动提交和在firefox里面弹出div窗口失败
2011-09-07 15:22 1799项目中遇到这么个问题 项目中想利用div制造弹出窗口的操作 c ... -
转:Div自适应高度
2011-08-04 14:49 1522由于设计页面需要,要把两个并排显示的div实现一样高的效果,n ... -
在eclipse里jsp编译后的java和class文件的位置
2011-08-03 14:08 10276eclipse版本不一样,位置也不一样 第一种:(网上搜到的) ... -
iframe的属性:document和Document以及Document的属性和iframe在各个浏览器获得内部文档的写法
2011-08-03 11:37 2139.document引用到是的 iframe所在页面对象, .D ... -
浏览器加载显示html的顺序
2011-08-02 15:36 2322其实浏览器加载显示html的顺序是按下面的顺序进行的: 1、I ... -
PreparedStatement setString 特殊字符乱码
2011-07-29 13:27 2257PreparedStatement setString 特殊字 ... -
符编码笔记:ASCII,Unicode和UTF-8
2011-07-29 10:37 937阮一峰 日期: 2007年10月28日 1. ASCII码 ... -
自己写的多表单插入数据和几个form同时提交
2011-07-28 18:40 3138<%@ page language="ja ... -
获得IEditorPart和IDocument
2011-04-18 13:08 2052IWorkbench workbench=Platform ... -
黑客利用js--alert(1)
2011-03-14 12:51 2895Javascript代码 ($=[$=[]][(__=!$+ ... -
Tomcat启动过程
2010-08-11 15:03 1178今天在独立的Tomcat中部署LifeRay Portal , ... -
Spring中bean的作用域
2010-08-10 13:44 1829如何使用spring的作用域 ... -
@SuppressWarnings("*****")
2010-08-07 16:25 1087解释一: 屏蔽某些编译时的警告信息 ... -
各种类型文件中java的形式
2010-08-06 17:35 1333.a' : 'application/octet-s ... -
maven的dependency和repository
2010-08-03 14:23 1100...
相关推荐
《深入理解Tomcat 5.0.18 ClassLoader源码》 Tomcat作为一个流行的开源Java应用服务器,其内部机制的探究对于Java开发者而言具有重要的价值。尤其在类加载(Class Loading)机制方面,它是Java应用程序运行的基础,...
### Tomcat中的ClassLoader详解 #### 一、引言 在深入了解Tomcat的工作原理时,一个重要的组成部分就是其ClassLoader机制。本文旨在深入剖析Tomcat中特有的类加载器(ClassLoader)体系结构,帮助读者理解Tomcat...
《Tomcat类加载机制——ClassLoader详解》 在Java Web开发中,Tomcat作为最常用的Servlet容器,其类加载机制对于理解和优化应用性能至关重要。本文将深入探讨Tomcat的ClassLoader是如何工作的,以及它如何影响到...
### Tomcat加载顺序详解 Apache Tomcat作为一款广泛使用的开源Servlet容器,其类加载机制是理解和维护基于Tomcat的应用程序的重要部分。Tomcat的类加载器遵循特定的加载顺序,确保了不同应用间的隔离性和资源的正确...
Java编程世界中,ClassLoader是一个至关重要的概念,尤其是在服务器端应用如Tomcat的环境中。本资料“Tomcat.ClassLoader.rar”聚焦于Java的类加载器(Class Loader)以及它在Tomcat容器中的工作原理,这对于理解和...
当`myApp`启动时,Tomcat会自动创建与`myApp`对应的ClassLoader,并通过`ContextBindings`将`jdbc/myDataSource`与该ClassLoader绑定。然后,在应用中,可以使用以下代码来获取数据源: ```java Context initCtx = ...
2. **Catalina ClassLoader**加载Tomcat核心类库; 3. **Common ClassLoader**加载Tomcat公共类库; 4. **WebApp ClassLoader**加载Web应用类库; 5. **Connector**和**Container**等组件初始化; 6. **Web应用**...
5. **ClassLoader机制**:Tomcat使用自定义的ClassLoader来加载Web应用程序的类,确保不同应用之间的类隔离,防止冲突。 Tomcat 6.0.18版的特性包括: 1. **性能优化**:相对于之前的版本,6.0.18进行了性能调优,...
4. Common ClassLoader:在Tomcat中,它是所有Web应用共享的类加载器,用于加载`common.loader`配置项指定的类路径。 5. WebApp ClassLoader:每个Web应用有自己的类加载器,它加载应用的`WEB-INF/classes`和`WEB-...
主要有三个类加载器:Bootstrap ClassLoader、Common ClassLoader和Webapp ClassLoader。Bootstrap加载JDK的类,Common加载`common.loader`指定的类,而Webapp类加载器则负责加载每个Web应用自己的类。理解类加载...
Bootstrap类加载器完成后,Tomcat会使用系统类加载器(System ClassLoader)加载服务器的全局配置文件,如`server.xml`。这个文件定义了Tomcat的整体架构,包括服务(Service)、连接器(Connector)和引擎(Engine)等组件...
5. **ClassLoader**:Tomcat使用自定义的ClassLoader来加载Web应用程序的类,这使得不同的应用程序可以使用相同的库而不会相互冲突。 6. **部署与管理**:可以通过修改conf/server.xml和conf/context.xml文件,或者...
《深入剖析Tomcat》这本书是Java开发者们探索Tomcat服务器内部机制的重要参考资料,它带领读者逐步揭开Tomcat的神秘面纱,深入理解其工作原理。Tomcat作为一款轻量级的开源Web应用服务器,广泛应用于各种Java Web...