-
tomcat源码分析_Tomcat功能及架构分析
2020-11-29 16:40:25静下来的时间,不想折腾了,安静下来,做自己吧!打理生活,看看书,喝喝茶,留时间给自己,余生不长,善待自己才是最重要的。Tomcat 相信做java的小伙伴一定不陌生...Tomcat功能我们先来分析下tomcat有哪些功能?To...静下来的时间,不想折腾了,安静下来,做自己吧!
打理生活,看看书,喝喝茶,留时间给自己,余生不长,善待自己才是最重要的。
Tomcat 相信做java的小伙伴一定不陌生,如今微服务容器盛行的时代,spring-boot内嵌了tomcat,让技术人更专注业务的实现,却也屏蔽了好多实现的细节。今天呢就带大家一起来探讨下tomcat的架构。
Tomcat功能
我们先来分析下tomcat有哪些功能?
Tomcat两个非常重要的功能:
Http服务器功能:Socket通信(TCP/IP)、解析Http报文;
Servlet容器功能:有很多servlet,处理具体的业务逻辑;
Tomcat架构
为了实现上述功能,tomcat进行了很多的设计封装,封装出了很多组件(所谓的组件在java源码中体现的就是具体的java类),组件与组件的关系就构成了所谓的tomcat架构。接下来就一起来欣赏下tomcat有哪些组件及其架构:
所谓容器(Container),并不是常说的用来存储数据结构的类,比如Collection、Set、List等,而是专指tomcat和spring mvc中用来对功能和结构进行分层抽象的概念(类或者接口)。tomcat的基本容器结构如图所示:
tomcat最顶层的容器Server,代表整个tomcat服务器,一个Server可以包含一个或者多个Service。一个Service包含一个或者多个Connetor,但是只能包含一个Container。Connector主要用来处理连接相关的事,比如网络套接字Socket的监听、请求request的接收和应答response的发送。这里的Container是一个抽象的概念,一个接口。其实是指一个Service只能包含一个Engine–Engine继承自Container。Engine容器结构如图所示:
其中Engine、Host、Context和Wrapper都继承自Container。 Engine用来管理多个站点,即可以有多个Host。Host代表一个站点,其实是一个虚拟主机。Context,上下文,代表一套应用程序,一套应用程序总是有相同的应用上下文配置。最后是Wrapper,每个wrapper只有一个Servlet,而每个Servlet即对应每个开发的spring mvc服务程序。所以我们开发的spring mvc服务程序都是通过Wrapper加载到tomcat中。在上一篇Tomcat与SpringMVC请求流程解析 已经介绍过。接下来的几篇中会通过源码调试及启动和请求流程来分析tomcat的实现原理。
最后以tomcat的整体架构图先从宏观上了解其实现,几年前看过一本书
《how tomcat works》推荐给大家,带你一步步从零实现一个tomcat,让你真正的了解tomcat的工作原理。
长按关注,欢迎一起探讨技术
-
netty与tomcat功能比较
2018-12-10 16:44:06总结了netty和tomcat的差异,入门级的比较,希望对读者有点帮助 -
手动实现tomcat功能
2019-05-23 10:49:20Tomcat服务器是一个免费的开放源代码的Web应用服务器。Tomcat是Apache软件基金会(Apache Software Foundation)的...我们只是简单实现tomcat的一部分功能,使我们更加了解tomcat。 手动实现: 首先创建HttpReque...Tomcat服务器是一个免费的开放源代码的Web应用服务器。Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。既然是免费的,我们为什么要手动实现?
我们只是简单实现tomcat的一部分功能,使我们更加了解tomcat。
手动实现:
首先创建HttpRequest和HttpResponse接收请求和响应请求,这里是基于socket实现,所以这里是阻塞等待,
如果想要实现nio,请查看 https://blog.csdn.net/qq_39057033/article/details/84942812
HttpResponse:
HttpRequest:
阻塞服务Server:
然后添加一些页面,配置web.xml,启动服务,就可以访问了。
-
【来促销主机】java主机开通查看内存和重启tomcat功能
2015-01-28 10:48:06【来促销主机】java主机开通查看内存和重启tomcat功能,以方便java主机用户掌握内存状况,并可以设置一定的频率自动重启tomcat。 java主机开通查看内存和重启tomcat功能 来促销主机的java主机独享jvm和tomcat服务,...【来促销主机】java主机开通查看内存和重启tomcat功能,以方便java主机用户掌握内存状况,并可以设置一定的频率自动重启tomcat。
java主机开通查看内存和重启tomcat功能
来促销主机的java主机独享jvm和tomcat服务,每个TOMCAT运行一个网站,而tomcat运行需要内存的支持,内存越大,TOMCAT越稳定。若内存比较小,不够用,TOMCAT就会报内存不足的错误,TOMCA若有问题,网站就不能访问!具体需要多大的内存,要看程序是否写得优化以及访问量等因素,当然内存越大越好! 来促销主机提供业界领先的java主机,内存大小透明可见,可在控制面板中实时查看内存使用情况。
开通查看内存和重启tomcat功能的优点
如果内存太小,可能导致网站经常打不开或报内存不足的错误,这时应该升级主机型号以获得更大的内存(较便捷),或者优化程序,减少对内存的占用(一般较难实现)。另外可以根据情况设置一定频率的自动重启tomcat以释放内存。
开通查看内存和重启tomcat功能的的目的
目前市场上其他竞争对手的java主机要么是共享内存,要么是独享非常小的内存大小(不注明内存实际大小也不提供内存查看功能),使得java主机经常卡死,不够稳定。而来促销主机的java主机经过7年时间的打磨,积累了丰富的运营经验。此次开放内存大小查看和自动重启功能,必将为客户带来更好的服务体验!
-
Tomcat功能的配置方法
2012-10-08 22:38:01tomcat/bin/catalina.bat 如果是linux 就是 catalina. sh 在rem 的后面增加如下参数 set JAVA_OPTS= -Xms256m -Xmx256m -XX:MaxPermSize=64m 2 修改Tomcat的JDK目录 打开tomcat/bin/catalina.bat ...1 启动内存参数的配置
tomcat/bin/catalina.bat 如果是linux 就是 catalina. sh 在rem 的后面增加如下参数 set JAVA_OPTS= -Xms256m -Xmx256m -XX:MaxPermSize=64m2 修改Tomcat的JDK目录
打开tomcat/bin/catalina.bat 在最后一个rem后面增加 set JAVA_HOME=C:\Program Files\Java\jdk1.6.03 增加虚拟目录
/tomcat/conf/server.xml 第一行是以前默认存在的,第二行是新增的 <Context path="" docBase="ROOT" debug="0" reloadable="true"></Context> <Context path="/jsp/a" reloadable="true" docBase="E:\workplace\www.java2000. net\WebContent" /> 使用默认配置的tomcat,另外虚拟目录也可这设置: <Context path="/test" docBase="webContent" reloadable="true"/> 因为默认情况下,tomcat启动过程中配置虚拟目录的时候会从 webapps目录下查找webContent应用。 这样配置好了,即使以后从一台服务器移植到另一台服务器,不做任何修改也能运行起来。4 GET方式URL乱码问题解决
打开 tomcat/conf/server.xml 查找下面这部分,在最后增加一段代码就可以了。 <Connector port="80" maxHttpHeaderSize="8192" ................. URIEncoding="UTF-8" useBodyEncodingForURI="true" ............... /> 其中的UTF-8 请根据你的需要自己修改,比如GBK5 虚拟主机配置文件
tomcat/conf/server.xml <!-- 默认的主机 --> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="ROOT" debug="0" reloadable="true"></Context> ... </host> <!-- 以下是新增的虚拟主机 --> <Host name="www.java2000. net" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="d:/www.java2000. net" debug="0" reloadable="true"></Context> <!-- 虚拟目录 --> <Context path="/count" docBase="d:/counter.java2000. net" debug="0" reloadable="true"></Context> </Host> <Host name="java2000. net" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="d:/www.java2000. net" debug="0" reloadable="true"></Context> <Context path="/count" docBase="d:/counter.java2000. net" debug="0" reloadable="true"></Context> </Host>6 数据源配置
比较复杂,各个版本都有所不同,请直接查看 http://java2000. net/p1906,包括tomcat5.0,tomcat5.5x,tomcat6.0的各个版本的配置方法。 -
如何让eclipse具有发布到TOMCAT功能
2012-01-07 14:56:52从菜单开始操作:File - export - Web - WAR file,在弹出的对话框Destination项输入war文件的全路径文件名,一般是在tomcat目录下的webapps目录下,如【C:\Tomcat 6.0\webapps\fileupload.war】,关闭tomcat,删除... -
Tomcat常用功能
2020-04-03 13:52:27Tomcat 常用功能环境tomcat 管理页面以及功能Manager APPServer StatusHost AppTomcat查看启动项目 因为经常使用Tomcat,但因为时间有点久远,对于脱离了指定编辑器的部署有点疑惑,所以,这里重新记录一下,以方便... -
tomcat管理功能
2019-08-16 11:27:57安装完tomcat以后,通过8080端口访问服务器,即可看到以下页面。注意右手边有两个管理功能,Manager App 和 Host Manager。 Manager App 可以管理web程序,而且不需要重启tomcat服务。包括以下功能:显示你上一个... -
Tomcat的功能
2018-10-02 14:54:07功能如下: 1、 Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在... -
Tomcat 管理功能使用
2019-10-01 20:37:44Tomcat管理功能用于对Tomcat自身以及部署在Tomcat上的应用进行管理的web应用,在默认情况下是处于禁用状态的。(管理页面报 403 错误 ,一是因为验证用户名密码,二是因为禁用授权地址) 如果需要开启这个功能,就... -
solr+tomcat完成搜索功能
2017-10-31 21:32:21solr+tomcat完成搜索功能,solr+tomcat完成搜索功能,solr+tomcat完成搜索功能 -
Tomcat实现功能
2018-10-24 14:07:47session会话机制。 -
Tomcat | 开启 Tomcat 的文件下载功能
2020-07-10 18:01:31一、功能说明 ...这时,我们可以考虑 tomcat 的 listings 功能。 二、 配置过程 vim $TOMCA_HOME/conf/web.xml ($TOMCA_HOME 是 tomcat 的安装目录) 修改如下配置:(要将 listings 的 false 改为 true) -
tomcat - 功能简介
2015-03-11 09:18:59Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现... -
tomcat文件上传功能
2020-06-16 10:37:12文件上传下载功能实现零、流程一、准备工作1、创建空项目2、导包3、配置Tomcat二、文件上传的注意事项(调优)三、需要用到的类详解FileItem类ServletFileUpload类四、代码编写 零、流程 一、准备工作 1、创建空... -
Tomcat远程监控功能
2019-09-25 08:50:28一、修改配置文件,开启远程监控功能 [root@fengling ~]# vim /usr/local/tomcat/bin/catalina.sh #加入以下内容 #!/bin/sh CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.... -
Eclipse 配置tomcat以及初步认识Tomcat文件的功能
2020-04-01 10:22:59下载对应版本的tomcat 解压放到文件夹内 eclipse 需要安装tomcat前提要配置jdk 二:eclipse连接tomcat,不需要配置环境变量 1.找到Servers 也可以从这里找 开始配置 这时项目栏会出现Server工程,tomcat出也不再... -
Tomcat配置登录拦截功能
2017-12-08 18:38:29Tomcat 设置登录验证如果项目较小,设置简单的登录验证,可以通过tomcat设置登录功能,做到简单的项目拦截。添加登录验证后,访问项目的tomcat拦截的弹框如下:这里是将我的项目放到了tomcat/webapps/ROOT下了,这是... -
Tomcat实现的功能
2014-11-25 17:44:41Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现... -
Tomcat日志切割功能实现
2018-08-09 16:58:01Tomcat日志切分功能 简介: catalina.out文件中记录了tomcat运行过程中的一系列信息,但如果长时间不做清理的话,文件就会越来越大,为了避免此问题,使用日志切分功能即可 安装前提: cronolog #这个工具具体我也不是... -
推荐一款功能强大的Tomcat 管理监控工具,可替代Tomcat Manager
2018-09-09 11:18:44我们在本地启动Tomcat服务器后,用localhost:<默认端口>访问: 再点Manager App,即可...最近我在github上找到一个功能强大的Tomcat 管理监控工具,可以用来替代Tomcat默认的Manager应用: https... -
tomcat目录列表功能
2011-10-13 11:40:59tomcat或其他容器都支持列表功能,该功能的配置位于各容器的web.xml文件中,如下: default org.apache.catalina.servlets.DefaultServlet debug 0 listings true 1 将配置项l -
tomcat
2019-10-17 21:14:38一、认识tomcat? Tomcat:一种web服务器 Tomacat是由Apache推出的一款...Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,在处理静态Html上的能力略逊一筹。 To... -
关于Tomcat反向代理功能:
2018-08-13 12:07:54关于Tomcat反向代理功能: 将客户端的静态请求由{Nginx,Apache}处理,而动态请求则转发至后端Tomcat服务器 Nginx实现方式: 准备工作 Tomcat Nginx 请求过程: client --> http --> nginx --&... -
tomCat
2018-12-20 09:33:18Tomcat 是由 Apache 开发的一个 Servlet 容器,实现了对 Servlet 和 JSP 的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。 由于 Tomcat 本身也内含了一个 HTTP ... -
linux多个tomcat配置及tomcat常用功能配置
2015-01-30 14:13:00一,配置多个tomcat 编辑环境变量:vi /etc/profile #java环境配置 export JAVA_HOME=/usr/java/jdk1.7.0_71/ export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.... -
tomcat加入log功能
2014-07-28 15:40:441、下载 log4j 与 commons-logging 2、将 commons-logging-1.1.1.jar 与 log4j-1.2.15.jar 放在 %TOMCAT_HOME%/bin 目录下 -
Tomcat
2018-03-01 15:46:53Tomcat介绍 1.Tomcat因为技术先进、性能稳定、而且免费,所以深受Java爱好者的喜爱,成为...Tomcat具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,Servlet容器是Tomcat的默认模式。 2.Tomcat的下载地址...