- 浏览: 1051814 次
- 性别:
- 来自: 郑州
文章分类
- 全部博客 (605)
- 数据挖掘 (22)
- spring (40)
- 工具使用 (39)
- java (137)
- JavaScript (40)
- webwork (12)
- web (120)
- 资源 (7)
- SSH (5)
- oracle (20)
- J2ME (1)
- 环境配置 (37)
- 项目管理 (29)
- mysql (14)
- struts (4)
- 项目总结 (27)
- ibatis学习 (33)
- 学习计划 (2)
- 缓存 (7)
- 重构 (3)
- Android (1)
- jquery (12)
- UML (3)
- 用户体验 (4)
- 习惯 (7)
- sakai (1)
- urlrewrite (4)
- rss (5)
- C plus plus (5)
- 算法 (5)
- 海量数据处理 (7)
- office(word、excel) (1)
- 面试题 (3)
- solr (8)
- 大数据 (2)
最新评论
-
hujin19861102:
截图看不见,最后一个webwrok的配置看不见
Ext+Webwork+Json 实现分页表格查询效果 -
蜗牛笔:
弱弱的问一句,要是分出来的词在词典中没有,那么两部分的pos- ...
ICTCLAS 中科院分词系统 -
weipeng1986:
授人予鱼不如授人予鱼,我想问你的是你是怎么总结的。比如第四种情 ...
JAVA中字符串连接效率的测试 -
xiaoqiang2008:
执行两次的原因是什么,好像楼主没弄清楚啊!是不是在web.xm ...
关于Spring中用quartz定时器在定时到达时同时执行两次的问题 -
Kent_Mu:
...
ibatis-dynamic的用法
Tomcat的class加载的优先顺序
1.最先是$JAVA_HOME/jre/lib/ext/下的jar文件。
2.环境变量CLASSPATH中的jar和class文件。
3.$CATALINA_HOME/common/classes下的class文件。
4.$CATALINA_HOME/commons/endorsed下的jar文件。
5.$CATALINA_HOME/commons/i18n下的jar文件。
6.$CATALINA_HOME/common/lib
下的jar文件。
(JDBC驱动之类的jar文件可以放在这里,这样就可以避免在server.xml配置好数据源却出现找不到JDBC
Driver的情况。)
7.$CATALINA_HOME/server/classes下的class文件。
8.$CATALINA_HOME/server/lib/下的jar文件。
9.$CATALINA_BASE/shared/classes
下的class文件。
10.$CATALINA_BASE/shared/lib下的jar文件。
11.各自具体的webapp
/WEB-INF/classes下的class文件。
12.各自具体的webapp
/WEB-INF/lib下的jar文件。
class的搜寻顺序如下:
-------------------------------------------------------------
Bootstrap
classes of your JVM
System class loader classses (described above)
/WEB-INF/classes of your web application
/WEB-INF/lib/*.jar of your web
application
$CATALINA_HOME/common/classes
$CATALINA_HOME/common/endorsed/*.jar
$CATALINA_HOME/common/i18n/*.jar
$CATALINA_HOME/common/lib/*.jar
$CATALINA_BASE/shared/classes
$CATALINA_BASE/shared/lib/*.jar
--------------
因此放在不同webapp里的class文件,会被classloader加载成不同的实例。
例如假设下面两个不同内容的class。分别放在不同的webapp的class目录下。
package
com.fj;
public class TestClass {
private String
NAME="风间";
}
package com.fj;
public class TestClass {
private
String
NAME="小新";
}
在不同的webapp得到的com.lizongbo.NAME结果是不同的,且互不影响。
但是注意,以下包名开头的class例外:
javax.*
org.xml.sax.*
org.w3c.dom.*
org.apache.xerces.*
org.apache.xalan.*
ps,注意.在各个jar中的\META-INF\MAINFEST.MF文件里Class-Path键值对,也会提供jar的加载优先顺序。
例如某jar的MAINFEST.MF内容如下:
Manifest-Version:
1.0
Created-By: lizongbo
Class-Path: commons-beanutils.jar
Class-Path:
commons-collections.jar
Class-Path: commons-dbcp.jar
Class-Path:
commons-digester.jar
Class-Path: commons-logging.jar
Class-Path:
commons-pool.jar
Class-Path: commons-services.jar
Class-Path:
commons-validator.jar
Class-Path: jakarta-oro.jar
Main-Class:
com.lizongbo.MyTestClass
那么在加载这个jar的时候,会先在此jar所在目录下依次先加载commons-beanutils.jar,commons-collections.jar。。。等jar文件。
在不同的地方放置jar和class可能会产生意想不到的后果,,尤其是不同版本的jar文件,因此在实际应用部署web应用时候要特别留心.
例如
使用javamail常见的一个出错信息:
javax.mail.NoSuchProviderException: No provider for
smtp
其真实原因就很可能如下:
在不同的加载jar的目录下放置了不同版本的mail.jar,比如一个是javamail1.3.1的mail.jar
在D:\jakarta-tomcat-5.5.8\common\lib下,而另外一个是javamail1.3.2的mail.jar在
D:\jakarta-tomcat-5.5.8\webapps\lizongbo\WEB-INF/lib下,
那么lizongbo这个webapp中使用到javamail进行邮件发送的时候,便会出现No
provider for smtp的错误。
发表评论
-
firefox 兼容两个小细节
2012-12-29 10:38 13351. 火狐下radio无法选中问题 描述: 当JS ... -
专业的网页测试工具 YSLOW
2012-11-07 19:41 954http://guangqiang.iteye.com/blo ... -
freemarker 静态化网页
2012-11-07 19:39 1217freemarker的作用: MVC框架 ... -
基本CSS选择器,复合选择器,后代选择器
2012-11-02 13:23 1050http://gaterking.blog.51cto. ... -
webwork <ww:url> 转 jstl <c:url>标签
2012-11-02 11:06 2193项目之前分页组件一直使用的是 项目组定义的 公用分页,其中引用 ... -
CSS 图片拼合生成器
2012-11-02 10:53 1839CSS 图片拼合生成器在线 工具(已测试使用,基本满足网站对s ... -
可编辑的div 插入文本与图片(要求光标定位插入)
2012-09-11 17:39 1970http://jianzhong5137.blog.163.c ... -
jsp include 包含的区别
2012-05-14 16:39 1067c.jsp <!DOCTYPE html ... -
mysql + tomcat 连接池配置问题
2012-04-18 21:23 1012javax.naming.NameNotFoundExcept ... -
tomcat启动异常
2012-03-28 16:23 1446ERROR 2012-03-28 16:00:41,34 ... -
Java路径问题最终解决方案
2012-03-08 18:21 1045http://blog.csdn.net/shendl/art ... -
怎么避免浏览器缓存静态文件(js/css/img)
2012-03-08 18:16 0怎么通过程序删除清空客户端的浏览器缓存 对于动态文件, ... -
使用HTMLparser解析HTML
2012-03-06 09:27 1417http://express.ruanko.com/ru ... -
IE 6下 a javascript:void(0)问题
2011-12-16 19:04 1369原文地址:http://blog.csdn.net/lee ... -
jquery treeview
2011-12-13 14:59 2537<link rel="stylesheet&q ... -
显示数据加载中
2011-12-13 14:32 1122在加载比较慢的页面(如含有很多节点的树)中,引入公用文件,公用 ... -
jquery ui dialog 遮拦 select的解决方法
2011-09-30 09:23 3284<script type="text/java ... -
CSS Sprites合并多个小图片
2011-09-29 11:31 1183这种方法看似繁琐,但却是非常有实用价值的。 首先,CS ... -
form表单只提交值,而不进行页面跳转(转)
2011-09-29 11:19 21520源自: http://trinea.iteye.com ... -
Spring 配置中的 default-lazy-init="false"
2011-09-26 18:03 1857Spring 配置中的 default-lazy-init=& ...
相关推荐
### Tomcat启动时类加载顺序详解 #### 一、引言 Apache Tomcat是一款开源的Servlet容器,主要用于部署Java Web应用程序。它支持最新的Servlet、JSP等规范,并且以其轻量级、简单易用的特点而受到开发者的青睐。在...
在Java中,类加载器是JVM的一部分,它的任务是将.class文件从磁盘加载到内存,并使这些类在运行时可用。类加载器遵循双亲委派模型,这意味着当一个类加载器尝试加载类时,它首先会将请求委托给其父类加载器,直到...
类加载的顺序为: 1. /Web-INF/classes 2. /Web-INF/lib/*.jar 3. Bootstrap 4. System 5. $CATALINA_HOME/common/classes 6. $CATALINA_HOME/common/endores/*.jar 7. $CATALINA_HOME/common/lib/*.jar 8. $...
3. **Tomcat自带的Class reloading** - Tomcat在开发模式下,可以通过设置`reloadable=true`在`conf/server.xml`中的`Context`元素内,启用类的热重载。但这仅适用于源代码改变后,重新编译并部署的 `.class` 文件...
Tomcat采用了多层类加载机制,确保不同层次的应用之间不会出现类加载冲突。以下是类加载器的基本层级结构及其加载顺序: - **Bootstrap ClassLoader**:加载Java核心类库,位于`$JAVA_HOME/jre/lib/ext/*.jar`。 - ...
Tomcat 类加载器的实现主要围绕着Java的类加载机制进行,旨在确保应用之间的类隔离,并提供灵活的资源访问策略。下面我们将深入探讨这些知识点。 首先,Java的类加载机制是基于“双亲委托模型”的。当一个类加载器...
6. **Classloading机制**:Tomcat的类加载机制对于理解和定制化部署非常重要。它遵循"父子类加载器"原则,理解类加载的顺序和策略对于解决类冲突问题至关重要。 7. **JMX(Java Management Extensions)**:Tomcat...
当请求匹配到过滤器映射时,Tomcat会创建一个过滤器链,并按顺序调用每个过滤器的`doFilter()`方法。过滤器可以决定是否继续调用下一个过滤器,或者直接处理请求。 ```xml <filter-name>...
理解Struts2在Tomcat中的加载过程有助于我们更好地进行Web应用开发和故障排查。 首先,让我们深入了解一下Struts2的核心组件: 1. **Filter Dispatcher**:Struts2的核心是`FilterDispatcher`,它是一个Servlet...
在Tomcat 5.0.18中,Webapp ClassLoader会优先加载WEB-INF/classes目录下的类,然后是WEB-INF/lib目录下的JAR文件。 5. **Parent First / Child First策略**:Tomcat的ClassLoader加载策略有两种,一种是"parent ...
2. **System ClassLoader**:通常由JVM的`java.class.path`系统属性指向,负责加载`$CATALINA_HOME/bin/bootstrap.jar`中的类库,这些类主要用于初始化Tomcat并执行主方法。 3. **Common ClassLoader**:这个类加载...
数字值表示加载顺序,值越小优先级越高。 通过以上解析可以看出,`web.xml` 文件在Java Web应用中扮演着非常重要的角色。合理地利用这些元素可以帮助我们更好地组织和管理Web应用,提高开发效率和应用性能。
- **加载顺序**:`load-on-startup`指定Servlet加载的优先级,数值越小优先级越高。 #### 五、总结 通过上述步骤,可以有效地配置JDK、Tomcat5.5、Tomcat6.0以及部署MySQL驱动程序。正确的配置是成功部署Java Web...
Tomcat会优先加载`classes`目录下的类文件,之后才是`lib`目录下的JAR文件。 - `WEB-INF`目录下的文件对外部直接访问是不可见的,以确保安全性和整洁性。 - 在部署多个Web应用时,每个应用都需要有自己的独立目录...
Tomcat采用了一种层次化的类加载机制,确保每个类加载器只加载自己权限范围内的类,并遵循特定的加载顺序。这种机制保证了系统的稳定性和安全性。 1. **Bootstrap**:加载核心Java库,这些库通常位于`$JAVA_HOME/...
Tomcat的类加载机制遵循特定的顺序: 1. `/Web-INF/classes`:首先加载当前Web应用的类。 2. `/Web-INF/lib/*.jar`:接着加载Web应用的JAR包。 3. `Bootstrap`:加载JRE的扩展目录中的JAR。 4. `System`:加载系统...