tomcat的一些简单了解总结

    在了解tomcat前我们先看下通常一个应用目录的结构:

,这里web.xml不是必须的,如果lib和classes下有相同的包名,类名。classloader优先从classes下加载,每个应用有自己单独的classloader实例,线程在进入和退出webapp逻辑时要进行classloader的切换,一个webapp对应一个servletContext。
    从组件的角度,tomcat分为connector和container,这两个组件有封装在service组件里,如图所示:

tomcat的server可以包含一组service,通常只有1个service,有1-2个connector。
connector的协议有HTTP/HTTPS及AJP。
    Catalina的四重奏:engine,host,context,wrapper。engine内部可以包括多个host,host可以部署多个应用,context应用上下文,可以包含多个wrapper。wrapper对应规范里定义的servlet;这层封装便于拦截和扩展。
    关于容器中的后台线程的一些了解:
   (1)servlet规范定义了app reload:服务器应该能够更新一个新版本的应用程序,而无需重启容器。
   (2)并不是每个子容器都会启动后台线程,默认情况下,只有Engine会启动后台线程。
   (3)reload的时候,做了什么?
        stop appContext
        start appContext
   (4)server的停止过程:
         1)pause connector
         2) stop container
         3) stop connector

猜你喜欢

转载自mjc410621.iteye.com/blog/2161782