Tomcat容器模型原理

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。。

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

Tomcat是有一系列逻辑模块组织而成,这些模块主要包括:

  • 核心架构模块:例如Server,Service,engine,host和context及wrapper等
  • 网络接口模块connector
  • session管理模块
  • jasper模块
  • naming模块
  • JMX模块
  • 权限控制模块

Tomcat 的容器分为四个等级,真正管理Servlet 的容器是Context 容器,一个 Context 对应一个 Web 工程

Tomcat 的容器等级中,Context 容器是直接管理 Servlet 在容器中的包装类Wrapper(StandardWrapper)的容器,所以 Context 容器如何运行将直接影响 Servlet 的工作方式。

servlet的包装类:StandardWrapper,这里有个疑问,为什么要将 Servlet 包装成 StandardWrapper 而不直接是 Servlet 对象。因为StandardWrapper 是 Tomcat 容器中的一部分,它具有容器的特征,而 Servlet 为一个独立的 web 开发标准,不应该强耦合在 Tomcat 中。

除了将 Servlet 包装成 StandardWrapper 并作为子容器添加到 Context 中,其它的所有 web.xml 属性都被解析到 Context 中,所以说 Context 容器才是真正运行 Servlet 的 Servlet 容器。一个 Web 应用对应一个 Context 容器,容器的配置属性由应用的 web.xml 指定,这样我们就能理解 web.xml 到底起到什么作用了

时间: 2024-10-10 01:45:14

Tomcat容器模型原理的相关文章

Spring Boot2.0之 原理—创建内置Tomcat容器

前面所述的https://www.cnblogs.com/toov5/p/9823728.html 中的第一条先不赘述了,就是玩了maven 重点介绍后两条 首先内置Tomcat: SpringBoot中内置tomcat服务器 Java操作创建tomcat 我们点击pom中的 持续点击到 继续点击会发现: 这个依赖 为我所需~ 注意:Springboot2.0之后 Tomcat8.0以上版本 引入到自己的pom中(类似的还有其他的依赖包): <project xmlns="http://m

docker容器网络通信原理分析

概述 自从docker容器出现以来,容器的网络通信就一直是大家关注的焦点,也是生产环境的迫切需求.而容器的网络通信又可以分为两大方面:单主机容器上的相互通信和跨主机的容器相互通信.而本文将分别针对这两方面,对容器的通信原理进行简单的分析,帮助大家更好地使用docker. docker单主机容器通信 基于对net namespace的控制,docker可以为在容器创建隔离的网络环境,在隔离的网络环境下,容器具有完全独立的网络栈,与宿主机隔离,也可以使容器共享主机或者其他容器的网络命名空间,基本可以

Tomcat数据源的原理,配置及使用(JNDI)

Tomcat数据源的原理,配置及使用 知识点: 1.数据源的作用及操作原理; 2.Tomcat中数据源的配置; 3.数据源的查找及使用 传统JDBC使用过程存在以下四个步骤: 1.加载驱动程序 2.进行数据库连接 3.数据库操作 4.数据库关闭 对于不同的用户只有操作不同,但是1,2,3三个步骤是一个重复的操作 如果开始种直接使用JDBC操作的化,那么会产生一种性能的问题 那么假设数据库不关闭,一户如果有新的用户使用的时候直接取一个已经有的连接就可以了 这就是数据库连接池,数据库连接池里存放的是

Spring通过JNDI获取在Tomcat容器中配置的C3P0数据源

开始直接使用Spring通过JNDI获取在Tomcat容器中配置的数据源,Tomcat默认的应该是DBCP连接池,没问题,一切OK,由于Hibernate和Spring都推荐使用C3P0连接池,所以就尝试配置一下,没想到整了半下午,才搞定配置,惭愧!网上的内容眼花缭乱,鱼龙混杂,不如自己靠谱!直接上代码,后面附出现的问题! 配置两个地方: 1.Tomcat\conf下的context.xml 2.Spring的配置文件 提示: 1.如果要优化连接池的性能,要对参数进行设置,具体的要看官网!官网最

tomcat组成及原理[转]

Tomcat安装好后打开目录;可以看到如下结构: bin :存放服务器脚本; conf :存放配置文件; lib :存放需要的JAR文件; wabapps :存放需要发布的Web应用程序及其部署文件; work :存放jsp 文件编绎生成的class文件; logs :存放日志文件; 在conf目录下可以看到 Catalina 目录,context.xml, web.xml, server.xml 等(一些不是很重要的就不列出来了). server.xml被称为Tomcat的主配置文件或全局配置

Tomcat启动过程原理详解 -- 非常的报错:涉及了2个web.xml等文件的加载流程

Tomcat启动过程原理详解 发表于: Tomcat, Web Server, 旧文存档 | 作者: 谋万世全局者 标签: Tomcat,原理,启动过程,详解 基于Java的Web 应用程序是 servlet.JSP 页面.静态页面.类和其他资源的集合,它们可以用标准方式打包,并运行在来自多个供应商的多个容器(诸如tomcat).Web 应用程序存在于结构化层次结构的目录中,该层次结构是由 Java Servlet 规范定义的.Web 应用程序的根目录包含直接存储或存储在子文件夹中的所有公共资源

springboot(八) 嵌入式Servlet容器自动配置原理和容器启动原理

1.嵌入式Servlet容器自动配置原理 1.1 在spring-boot-autoconfigure-1.5.9.RELEASE.jar => springboot自动配置依赖 jar包下,EmbeddedServletContainerAutoConfiguration => 嵌入式servlet容器自动配置类 @AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE) @Configuration @ConditionalOnWebApplicatio

深入浅出Tomcat/4 - Tomcat容器

Container是一个Tomcat容器的接口,Tomcat有四种容器 ·     Engine ·     Host ·     Context ·     Wrapper Engine代表整个Catalina的Servlet引擎,Host则代表若干个上下文的虚拟主机.Context则代表一个Web应用,而一个Context则会用有多个Wrapper.Wrapper是一个单独的Servlet. 下图是几种容器实现的类继承图,我们可以看到最下层以Standard开头的几个类 ·     Stan

Tomcat剖析(五):Tomcat 容器

Tomcat剖析(五):Tomcat 容器 1. Tomcat剖析(一):一个简单的Web服务器 2. Tomcat剖析(二):一个简单的Servlet服务器 3. Tomcat剖析(三):连接器(1) 4. Tomcat剖析(三):连接器(2) 5. Tomcat剖析(四):Tomcat默认连接器(1) 6. Tomcat剖析(四):Tomcat默认连接器(2) 7. Tomcat剖析(五):容器 第一部分:概述 这一节基于<深度剖析Tomcat>第五章:容器 总结而成 一定要先到我的git