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[1];

        paramTypes[0] = Class.forName("java.lang.ClassLoader");

        Object paramValues[] = new Object[1];

        paramValues[0] = 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);

    }

    

猜你喜欢

转载自zyhui98.iteye.com/blog/2148026