Tomcat源码解析
Tomcat源码解析
AnEra
厚积薄发, 天道酬勤
展开
-
Tomcat8.5 源码配置
一、源码下载 tomcat8.5.47下载二、项目结构 1. 新建一个文件夹tomcat8 2. 将解压后的源码包复制进来 3. 新建一个catalina-home文件夹 4. 将apache-tomcat-8.5.47-src文件中的conf文件和webapps复制到catalina-home中...原创 2019-11-06 11:04:39 · 801 阅读 · 0 评论 -
Tomcat是如何启动Spring,SpringMVC,Mybatis整合的web项目的?
1. 当我们启动一个web项目时, 会先去启动tomcat, 也就是Bootstrap的mian()方法, tomcat开始由server组件开始一层一层向下初始化以及启动;2. 当启动Host容器之后, 会触发HostConfig的监听操作, 开始部署/webapps目录下的web项目, 然后会通过反射创建Context实例对象, 并将当前部署的web项目绑定到该Context容器实例上; ...原创 2020-01-27 11:58:10 · 3561 阅读 · 0 评论 -
Tomcat源码解析一(Tomcat整体架构解析)
目录一、Tomcat结构概览二、模块解析1. Server2. Service3. Connector4. Container4.1 Engine4.2Host4.3Context4.4Wrapper三、Tomcat启动流程一、Tomcat结构概览1. 结构图:核心配置文件 Server.xml<?xml ver...原创 2019-11-18 17:04:55 · 656 阅读 · 0 评论 -
Tomcat源码解析二(Tomcat初始化过程解析)
Tomcat启动流程图:org.apache.catalina.startup.Bootstrap是Tomcat的入口, 在Bootstrap的main方法中完成了对Catalina的初始化以及启动Tomcat的启动入口main方法是在Bootstrap类里,但具体的执行过程是在Catalina里边,这样做可以使得把启动的入口和具体的管理类进行分开,从而可以方便的创建多种启动的方式。...原创 2019-11-18 18:29:31 · 461 阅读 · 0 评论 -
Tomcat源码解析三(Tomcat启动过程解析)
Tomcat初始化以及启动流程图:在BootStrap的main方法中调用Bootstrap的start()方法1. Bootstrap#start()方法实现public void start() throws Exception { if( catalinaDaemon==null ) init(); /** ...原创 2019-12-06 09:03:23 · 284 阅读 · 0 评论 -
Tomcat源码解析四(连接器启动过程解析)
一、逻辑分析:连接器中有三个核心组件:Endpoint、Processor 和 Adapter, 其中Endpoint 和 Processor 放在一起抽象成了 ProtocolHandler 组件, 关系图如下:EndpointEndpoint 是通信端点,即通信监听的接口,是具体的 Socket 接收和发送处理器,是对传输层的抽象,因此 Endpoint 是用来实现 TCP/...原创 2019-12-06 15:35:42 · 366 阅读 · 0 评论 -
Tomcat源码解析五(容器的启动过程解析)
目录1. 逻辑分析2. 源码分析2.1 引擎启动2.2 启动Host2.2.1 初始化Host2.2.2 启动Host2.2.3 Host生命周期监听2.2.4 部署webApps2.2.5 创建Context2.3 触发启动Context2.4 触发Wrapper初始化2.4.1 启动Wrapper2.4.2 初始化"启动时加载"的Servl...原创 2019-12-07 14:37:13 · 538 阅读 · 0 评论 -
Tomcat源码解析六(Http请求过程解析[基于NIO]_连接器解析过程)
一、启动线程接收客户端请求在NioEndpoint的startInternal()方法中启动Acceptor线程, 开始接收客户端请求NioEndpoint#startInternal()方法实现: @Override public void startInternal() throws Exception { if (!running) { ...原创 2019-12-08 21:07:20 · 651 阅读 · 0 评论 -
Tomcat源码解析七(Http请求过程解析(基于NIO)_容器解析过程)
在连接器对请求信息进行解析, 封装为Request和Response, 然后通过适配器CoyoteAdapter的service()方法调用引擎中管道pipeline的第一个Valve, 开始对请求进行处理;CoyoteAdapter#service实现:@Overridepublic void service(org.apache.coyote.Request req, org.ap...原创 2020-01-17 11:58:58 · 408 阅读 · 0 评论 -
Tomcat窗口输出日志出现中文乱码
启动bin目录下的startup.bat原因大概是:tomcat的默认输出格式为UTF-8,而Tomcat控制台的输出编码为GBK该图为Tomcat输出窗口编码格式(在窗口上方标题旁边右击即可查看)网上的解决方案:修改catalina.bat中set “JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS% -Dfile.encoding=GBK” (加粗字体为新添加内容...原创 2018-12-05 18:36:39 · 16154 阅读 · 10 评论 -
自定义Tomcat
一、Tomcat_v1Tomcat服务器本质上就是一个 Server的程序,所以这里我们先写一个Server的程序和Socket程序,先完成最基本的通讯功能Server.java:package com.tomcat_v1.mySocket_v1;import java.io.IOException;import java.io.InputStream;import java...原创 2019-12-01 19:48:14 · 1525 阅读 · 0 评论 -
Tomcat中的ResourceBundle国际化解析
一、ResourceBundle 简介: 资源束(ResourceBundle)是一个本地化对象。它封装了适用于本地环境的资源; 这个类主要用来解决国际化和本地化问题。国际化和本地化可不是两个概念,两者都是一起出现的。可以说,国际化的目的就是为了实现本地化。 比如对于“取消”,中文中我们使用“取消”来表示,而英文中我们使用“cancel”。若我们的程序是面向国际的...原创 2019-11-06 16:17:38 · 717 阅读 · 0 评论 -
Idea中tomcat8启动时控制台日志中出现部分乱码(tomcat国际化处理乱码)
在配置tomcat8.5源码项目时, 启动tomcat后, 控制台出现部分中文乱码日期部分的中文日志输出是正常的, 但是日志信息中的中文出现了乱码;由于日期部分输出是正常的, 所以可以确定日志的编码是没问题的, 只是日志中局部内容出现了乱码, 有可能这些乱码是在程序运行中获取的配置文件中的中文信息; 那这些中文信息是什么? 为什么会乱码? 会不会是因为编译软件?然后我重新下载了...原创 2019-11-06 17:37:11 · 1460 阅读 · 4 评论