您现在的位置是:首页 >

classloader加载原理 Tomcat类加载机制

火烧 2023-01-20 23:54:46 1044
Tomcat类加载机制   Tomcat Server在启动的时候将构造一个Cla Loader树 以保证模块的类库是私有的 Tomcat Server的Cla Loader结构如下 代码 Boot

Tomcat类加载机制  

  Tomcat Server在启动的时候将构造一个ClassLoader树 以保证模块的类库是私有的    Tomcat Server的ClassLoader结构如下

代码     Bootstrap             |                 System              |       Common        /                Catalina  Shared                         /              WebApp   WebApp    其中 Bootstrap 载入JVM自带的类和$JAVA_HOME/jre/lib/ext/* jar System 载入$CLASSPATH/* class Common 载入$CATALINA_HOME/mon/ 它们对TOMCAT和所有的WEB APP都可见 Catalina 载入$CATALINA_HOME/server/ 它们仅对TOMCAT可见 对所有的WEB APP都不可见 Shared 载入$CATALINA_HOME/shared/ 它们仅对所有WEB APP可见 对TOMCAT不可见(也不必见) WebApp 载入ContextBase?/WEB INF/ 它们仅对该WEB APP可见

  每个运行中的线程都有一个成员contextClassLoader 用来在运行时动态地载入其它类 系统默认的 contextClassLoader是systemClassLoader 所以一般而言java程序在执行时可以使用JVM自带的类 $ JAVA_HOME/jre/lib/ext/中的类和$CLASSPATH/中的类 可以使用Thread currentThread() setContextClassLoader( );更改当前线程的contextClassLoader 来改变其载入类的行为

  ClassLoader被组织成树形 一般的工作原理是 ) 线程需要用到某个类 于是contextClassLoader被请求来载入该类 ) contextClassLoader请求它的父ClassLoader来完成该载入请求 ) 如果父ClassLoader无法载入类 则contextClassLoader试图自己来载入注意 WebApp?ClassLoader的工作原理和上述有少许不同 它先试图自己载入类(在ContextBase?/WEB INF/ 中载入类) 如果无法载入 再请求父ClassLoader完成

classloader加载原理 Tomcat类加载机制
  lishixinzhi/Article/program/Java/ky/201311/28494  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码