bootstrap.jar的作用
来源:互联网 发布:深圳淘宝店托管 编辑:程序博客网 时间:2024/06/05 20:16
转自:点击打开链接
Tomcat6.0.18的bin目录下有一个bootstrap.jar文件,而这个jar中的内容在lib目录下的catalina.jar文件中也存在。为什么要把同样的class放在2个不同的jar中,而且还单独提取出来放到bin目录下?
从源码中可以看到,Tomcat6.0.18使用common ClassLoader加载lib目录下的jar,但执行启动脚本时,是把bin目录下的bootstrap.jar设置到-classpath中,然后执行MAINCLASS=org.apache.catalina.startup.Bootstrap。此时,是使用System ClassLoader来加载的Bootstrap.class。如果不单独提取出bootstrap.jar,而是将catalina.jar设置到-classpath中,这时catalina.jar中的所有class将会被System ClassLoader加载。
如果是后者就会出现问题了,catalina.jar中的类使用了通过common ClassLoader加载的lib目录下的jar中的class,而此时catalina.jar却是被System ClassLoader加载,默认的双亲委派会导致加载器的向上委托加载,导致catalina.jar中的class找不到common ClassLoader加载的class。
如果单独将bootstrap.jar提取出来,设置到-classpath中则就不会出现上述问题。而将bootstrap.jar放置到bin目录下,还有另外的用途,在源码中可以看到:
File bootstrapJar =
- bootstrap.jar的作用
- bootstrap theme 的作用
- jar包的作用
- spring jar的作用
- jar包的作用
- jar包的作用
- 一些jar的作用
- 一些jar的作用
- Bootstrap里的文件作用
- Bootstrap里的文件作用
- Hibernate jar包的作用
- 一些jar包的作用
- 相关jar包的作用
- 一些jar包的作用
- 一些jar包的作用
- 一些jar包的作用
- SSH各JAR的作用
- Spring jar包的作用
- SSL 3.0 Poodle漏洞修复方法
- Java关键字final、static使用总结
- Linux 压缩与解压缩命令
- ASN.1
- 命令行下mysql数据库连接与操作
- bootstrap.jar的作用
- Java线程创建的两种方法
- jhat中的OQL(对象查询语言)
- 双缓冲绘图——二
- 新的生活
- Hibernate使用count(*)取得表中记录总数
- C++基础之结构体(原来就是个幼儿园的书包-中学生的书包-小学生的书包-大学生的旅行包或者行李箱)
- 软件开发的思考: -------------- 代码的规范性
- 怎样理解产品需求的4个部分