
tomcat
GapaU
这个作者很懒,什么都没留下…
展开
-
(九) Tomcat 源码系列之 终章:性能优化
Tomcat 的性能优化可以从两个方面去考虑,JVM 优化,Tomcat 配置优化, 没有实际的开发经验和调优经验谈这个也是瞎几把扯淡,由于笔者仍在上大学,这方面接触不深,就不误人子弟了,了解一下即可可参考 : Tomcat 性能优化配置优化在大多数情况下,默认的配置可以满足我们的需求,但遇到特殊情况,就要考虑配置最优的选项了。比如,服务器性能过强,默认配置不能发挥全部性能,这就有点浪费了。常用配置如下 :maxConnections : 最大连接数,当到达该值时,服务器接受但不会处理更多的请求,额原创 2020-07-24 15:21:36 · 194 阅读 · 0 评论 -
(八) Tomcat 源码系列之 配置和安全
Tomcat 服务器的配置主要集中于 tomcat/conf 下的 catalina.policy、catalina.properties、context.xml、server.xml、tomcat-users.xml、web.xml 文件。server.xmlserver.xml 是 Tomcat 服务器的核心配置文件,包含了 Tomcat 的 Servlet 容器(Catalina)的所有配置。由于配置的属性特别多,我们在这里主要讲解其中的一部分重要配置。Server<Server por原创 2020-07-22 17:51:48 · 206 阅读 · 0 评论 -
(七) Tomcat 源码系列之 Jsp 处理流程
接着昨天讲的, Tomcat 是如何响应的, 也就是如何请求转发和重定向的? 聊这个之前,先来看看 Tomcat 是如何处理 jsp 页面的?查看 /conf/web.xml 配置文件<web-app .... > <servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.Defau原创 2020-07-22 16:51:04 · 609 阅读 · 0 评论 -
(六) Tomcat 源码系列之 请求处理
前面已经详细介绍了 Tomcat 的线程模型, 那么对于一个请求, Tomcat 到底是如何处理的呢 ?Acceptor由 NioEndpoint 的内部类 Acceptor 监听连接// Acceptor 实现类 Runable 接口, 直接查看 run 方法int errorDelay = 0;// 一直循环, 直到收到 "shutdown" 命令while (running) { // 当 Endpoint 暂停时, 自旋 while (paused &&a原创 2020-07-21 20:04:38 · 322 阅读 · 0 评论 -
(五) Tomcat 源码系列之 URI 映射
在地址栏输入的 URI , Tomcat 是如何找到对应的 Servlet 或 jsp 呢 ?其实在启动 Tomcat 组件 MapperListener 的时候, 就将对应的映射关系放入了一个 Mapper 中, 它有这几个作用映射关系存储:存储所有的 Host,Context 及 Wrapper 的对应关系;映射关系初始化及变更:当新增一个组件或者移除一个组件时,Mapper 如何维护 URI 到 Wrapper 的映射关系;映射关系使用 :根据 URI,映射到具体的 Host,Context原创 2020-07-21 12:44:55 · 304 阅读 · 0 评论 -
(四) Tomcat 源码系列之 Tomcat 启动流程
一切的 Java 程序入口都是 main 方法, Tomcat 的启动类是哪个呢?直接启动 Tomcat, 使用 jps -l 命令 (Linux 也可以使用 ps -ef | grep java), 查看本机上所有正在运行的 Java 程序可以看到, Tomcat 的主启动类是 org.apache.catalina.startup.BootstrapBootStrap 主启动类...原创 2020-07-19 21:13:00 · 384 阅读 · 0 评论 -
(三) Tomcat 源码系列之 Tomcat 线程模型
Tomcat 支持的应用层协议 : HTTP/1.1, HTTPS, AJP, 共有三种连接器模式 : BIO, NIO, APR, 在默认的配置下,使用的是 NIO 模式对于一个请求, Linux 是这样处理的 :TCP 的三次握手建立连接,建立连接的过程中,Linux 内核维护了半连接队列 (syn队列) 以及完全连接队列 (accept队列)syn 队列 : 用来保存处于 SYN_SENT 和 SYN_RECV 状态的请求accept 队列 : 用来保存处于 ESTABL原创 2020-07-18 17:14:42 · 851 阅读 · 0 评论 -
(二) Tomcat 源码系列之 Tomcat 架构
Catalina 架构Tomcat 是一个由一系列可配置的组件构成的 Web 容器,而 Catalina 可以看做是一个 Tomcat 实例Tomcat 由以下几个部分组成 :在源码上也可证明这一点 :Tomcat 本质上就是一款 Servlet 容器, 因此 Catalina 才是 Tomcat 的核心 , 其他模块都是为 Catalina 提供支撑的。 比如 : 通过 Coyote 模块提供链接通信,Jasper 模块提供JSP 引擎,Naming 提供 JNDI 服务,Juli 提供日志服原创 2020-07-17 18:59:14 · 213 阅读 · 0 评论 -
(一) Tomcat 源码系列之网络 I/O 模型
今天开始学习 Tomcat 源码, 本系列采用的是 Tomcat 8.5.57 源码构建, 在学习 Tomcat 源码之前, 先来学习基础知识 : 网络 I/O 模型. I/O 模型简单的理解:就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能Java 共支持 3 种网络编程模型 /IO 模型:BIO、NIO、AIOBIOBlocking IO, 同步并阻塞 (传统阻塞型),一般搭配线程池来使用, 否则只有一条线程在工作! 其中 : ServerSocket::accept原创 2020-07-16 21:15:43 · 580 阅读 · 0 评论