beebe_3 发表于 2017-1-23 09:37:29

tomcat初始化做了什么

  最近没事,看了下tomcat源码,tomcat启动的时候做了些什么?
  org\apache\catalina\startup\Bootstrap.java 发现这个类有个main访问,启动的时候调用这个类。
  我想应用启动的时候应该是后台启动一个线程在跑。
  public void init()
  throws Exception
  {
  // Set Catalina path
  setCatalinaHome();
  setCatalinaBase();
  initClassLoaders();
  Thread.currentThread().setContextClassLoader(catalinaLoader);
  SecurityClassLoad.securityClassLoad(catalinaLoader);
  // Load our startup class and call its process() method
  if (log.isDebugEnabled())
  log.debug("Loading startup class");
  Class startupClass =
  catalinaLoader.loadClass
  ("org.apache.catalina.startup.Catalina");
  Object startupInstance = startupClass.newInstance();
  // Set the shared extensions class loader
  if (log.isDebugEnabled())
  log.debug("Setting startup class properties");
  String methodName = "setParentClassLoader";
  Class paramTypes[] = new Class;
  paramTypes = Class.forName("java.lang.ClassLoader");
  Object paramValues[] = new Object;
  paramValues = sharedLoader;
  Method method =
  startupInstance.getClass().getMethod(methodName, paramTypes);
  method.invoke(startupInstance, paramValues);
  catalinaDaemon = startupInstance;
  }
  主要的初始化都在这个类了。
  public final class SecurityClassLoad {
  public static void securityClassLoad(ClassLoader loader)
  throws Exception {
  if( System.getSecurityManager() == null ){
  return;
  }
  loadCorePackage(loader);
  loadLoaderPackage(loader);
  loadServletsPackage(loader);
  loadSessionPackage(loader);
  loadUtilPackage(loader);
  loadJavaxPackage(loader);
  loadCoyotePackage(loader);
  loadHttp11Package(loader);
  loadTomcatPackage(loader);
  }
页: [1]
查看完整版本: tomcat初始化做了什么