Tomcat的简单工作原理

Tomcat是开源的实现了部分Java EE规范的Java Web应用服务器。除了J2EE,还有其他技术也通过容器来实现,比如:EJB,Java Mail,JPA,JTA,JMS。

值得注意的是,目前经常接触的java容器,tomcat和jetty只是实现了J2EE的部分规范,比如Servlet和JSP。像XML,JMS,JTA,JTS,JAF,JDBC,JNDI,EJB,RMI,CORBA等其他规范会在Jboss,Glassfish等新兴容器中首先实现。所以像Glassfish这种开源的的容器,是研究Java EE最新技术的第一选择。

下面针对Tomcat支持的Java EE的规范做个简单的介绍:
Servlet:扩展了Web服务器功能的小型的Java程序。
JSP:在HTML代码中嵌入JAVA代码,服务器在接收到客户端的请求后对JAVA代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。

Servlet容器

从tomcat的配置文件中可以看出,Servlet容器由Server,Service组成,其中Service又包含了很多的组件。

值得注意的是tomcat中conf路径中的server.xml体现的Server就是指的Tomcat服务器,负责管理各个Service,同时监听shutdown钩子。

Service就是Tomcat封装的支持WEB服务的组件,它包含许多的组件,其中有Connector和Container这两个重要组件,和Loader(类加载器),Realm(权限管理),JMX(提供远程监控tomcat的功能),Jasper(JSP解析引擎),Pipeline(请求的管道),Naming(即JNDI命名服务)等组件。

Container组件
Container由Engine(Servlet的主容器),Host(虚拟主机,负责部署web应用和Context的创建),Context(负责配置解析,管理Web资源),Wrapper(也就是每个Servlet的封装)组成,Engine又由多个Host组成,一个Host包含多个Wrapper。

Servlet的生命周期

  • 初始化调用init()方法:当请求到达Server,会被映射到相对应的Servlet,如果不存在对应的Servlet实例,则加载和实例化,此时调用init()方法
  • service()即是主方法,提供请求与返回
  • 销毁方法destory():当Server不再需要Servlet时,Server调用Servlet的destory()方法。

JSP规范

JSP引擎的工作流程

  • servlet容器编译servlet源文件,生成相应的类
  • 加载与JSP对应的servlet类,创建实例,并调用它的初始化方法,对应_jspInit()
  • 执行servlet实例的服务方法,对应_jspService()
  • 销毁servlet实例的销毁方法,销毁servlet实例,对应_jspDestory()

你可能感兴趣的:(Tomcat的简单工作原理)