Tomcat拾遗--BootStrap类的静态代码块和反射调用Catalina的意义是什么

首先我们需要知道一个潜规则:即如果我们在A类中调用B类,如果B类没有被classloader加载或者就算加载了 但是该classloader和A类的classloader属于平行的,即我们在A的classloader中找不到B类的class,那么A会使用自己的classloader去加载B。

BootStrap类的静态代码块的意义

默认设置好catalina.base和catalina.home 这样commonClassloader 就可以被初始化好。

反射调用Catalina的意义

因为Bootstrap这个类在Tomcat打包发布时是放在bin\bootstrap.jar中,
而Catalina类是放在lib\catalina.jar中,两个jar是用不同的ClassLoader加载的,
所以不能在Bootstrap类中直接引用Catalina类,只能通过反射。
这也意味着 后续我们在tomcat的Catalina类里面启动的类默认都是使用catalinaLoader(除了我们的context使用webappclassloader去加载的),进而tomcat使用的类只能被tomcat自己使用,而不会被其他应用使用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容