tomcat的核心组件以及作用

article/2024/12/23 13:02:56

应用服务器与我们的开发和工作息息相关,但是大部分人并没有真正的了解过应用服务器,所以我想介绍一下tomcat应用服务器的核心组件,大家一起来看看吧

1.tomcat主要组件的结构图

2. tomcat的启动

1) 读取tomcat的配置文件,其中最重要的是server.xm

2) 解析配置文件,对系统组件进行初始化,包括server,service,engine,connector,endpoint,可以参考server.xml文件文件的顺序

3) 启动各种组件准备提供服务

4) 在指定的端口开始监控请求

3. server.xml

server.xml文件说明:

  • Server

        代表整个Catalina Server容器,是tomcat实例的顶层元素,由org.apach.catalina.Server接口定义,其下可以包含一个或多个Service元素

                实现类: 实现org.apache.catalina.Server接口的类,默认值为 org.apache.catalina.core.StandardServer

                port:服务器监听shutdown命令的端口,必须设置
                shutdown:停止tomcat时发送给shutdown监听端口的字符串

  •  Service

        由org.apache.catalina.Service接口定义,它包含一个<Engine>元素,以及一个或多个<Connector>元素,这些<Connector>元素共享一个<Engine>元素

                实现类:实现org.apache.catalina.Service接口的类,默认值为org.apache.catalina.core.StandardService
                name:service的名字

  • Engine

        由org.apahe.catalina.Engine接口定义.每个<Service>元素只能包括一个<Engine>元素. <Engine>元素处理在同一个<Service>中所有<Connector>元素接收到的客户请求

                相关实现类:org.apache.catalina.Engine接口的类,默认值为org.apache.catalina.core.StandardEngine
                name 定义Engine的名字
                defaultHost 默认处理请求的主机名,必须与其中的一个Host元素的名称一样

  • Host

        由org.apache.catalina.Host接口定义.一个<Engine>元素可以包含多个<Host>元素.每个<Host>元素定义了一个虚拟主机,它可以包含一个或多个Web应用.

                实现类 实现org.apache.catalina.Host接口的类,默认值为org.apache.catalina.core.StandardHost
appBase 指定虚拟主机的对应的目录(即虚拟主机的部署目录),可以是绝对路径,也可以是相对于tomcat安装目录的相对路径,默认的部署目录为webapps
                unpackWARs 配置为true,表示tomcat会自动解压部署目录中的war包,如果配置为false,则不会解压,直接运行war文件,默认为false,建议保持默认值。
                autoDeploy 配置为true,表示tomcat处于运行状态时可以监测部署目录中的文件状态,如果有新的web应用部署进来则自动发布这个web应用。

  • Context

        最常配置的元素,每一个Context代表一个运行在tomcat中的web应用,一个Host下可以配置多个Context. 例如:
<Context path="/sample" docBase="sample" debug="0" reloadable="true">。

                实现类: 实现org.apache.catalina.Context接口的类,默认值为org.apache.catalina.core.StandardContext
                path 指定访问web应用的url路径
                docBase 发布的web应用的文件路径,可以时绝对路径,也可以是相对与发布目录的相对路径
                reloadable 设置为true,tomcat在运行期间会监测发布应用的WEB-INF/classes和WEB-INF/lib目录中的文件改动,当检测到文件变动后,tomcat会自动重新加载应用。
                cookies 是否可以通过cookie来支持Session,默认为true
                虽然可以使用Context节点来部署应用,但自tomcat5.5之后就不再建议这么做,可以在/conf/Catalina/{hostname}/xxx.xml进行独立部署,最简单的方式是直接将要发布的应用放到webapps下。

4. 关于连接器

        tomcat连接器的相关配置在server.xml配置文件中,service配置节点中的Connector节点。因为比较重要所以作为单独的章节讲述。Connector节点代表与客户处理连接的组件,负责接收客户的请求,并回复客户响应。配置实例如下:

<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" /><Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

  • 实现类: org.apache.catalina.Connector 接口的类,默认值为org.apache.catalina.core.StandardConnector
  • port=8080,定义一个HTTP Connector连接器,在8080端口监听,负责处理HTTP连接,浏览器和tomcat服务器的交互使用的就是这个连接。
  • port=8009,定义一个JK Connector连接器,在8009端口监听, 负责和其他的HTTP服务器建立连接,当tomcat需要与其他HTTP服务器集成时需要使用这个连接。

配置参数:

  • port:    配置连接端口
  • protocol:    连接使用的协议
  • connectionTimeout:   连接超时时间
  • redirectPort: 当用户用http请求某个资源,而该资源本身又被设置了必须要https方式访问,此时Tomcat会自动重定向到这个redirectPort设置的https端口
  • acceptCount:设定在监听端口队列中的最大客户请求数,默认值为10,如果队列已满,客户请求将被拒绝
  • address:如果服务器有两个以上IP地址,该属性可以设定端口监听的IP地址,默认情况下,端口会监听服务器上所有IP地址
  • enableLookups:如果设为true,表示支持域名解析,可以把IP地址解析为主机名.Web应用调用request.getRemostHost方法将返回客户的主机名.该属性默认值为true
  • executor: 配置tomcat的线程池,在此配置的名称与server.xml文件中Service节点下的Executor节点name属性相对应
  • compression : 如果带宽有限的话,可以用GZIP压缩,off:表示禁止压缩、on:表示允许压缩(文本将被压缩)、force:表示所有情况下都进行压缩,默认值为off
  • URIEncoding:用于解码URL的字符编码,没有指定默认值为ISO-8859-1

连接池配置

        相关配置在server.xml配置文件中Service节点下的Executor节点,配置示例:

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"maxThreads="150" minSpareThreads="4"/>

配置参数:

  • name: 连接池的名称
  • namePrefix: 线程名称前缀,配置后连接线程在线程池中的名称为:namePrefix + 线程编号
  • maxThreads: 线程池中保持的最大活跃线程数,默认值为200
  • minSpareThreads: 线程池中保持的最小活跃线程数,默认值为25
  • maxIdleTime: 线程最大空闲时间,如果到了最大空闲时间,则判断当前池中的连接数是否大于minSpareThreads设置的值,如果大于则关闭线程,配置的单位时ms(毫秒),默认值为6000(即1分钟)
  • daemon: 是否为后台守护线程,默认true、
  • threadPriority: 线程优先级默认为5


http://chatgpt.dhexx.cn/article/iEJLhTyQ.shtml

相关文章

Tomcat文件的作用

tomcat安装需要配置JAVA_HOME环境变量&#xff0c;且不建议放在中⽂路径下。8.0版本为免安装&#xff0c;解压完即可使用。9.0需要点击exe文件进行安装。 1. bin目录&#xff08;用于存放一些指令&#xff0c;如启动服务器,关闭服务器。&#xff09; 该⽬录下存放的是⼆进制可…

Tomcat各个文件夹的作用

今天晚上需要产品上线&#xff0c;先学习一下tomcat各个文件夹的作用&#xff0c;以前了解过一些&#xff0c;但是都不是特别的全面&#xff0c;这次系统的了解一下tomcat文件夹的作用。 首先拿tomcat7来说&#xff0c;如果是从官网上刚下载下来的压缩包的话&#xff0c;解压以…

TOMCAT的作用及各目录作用

TOMCAT作用&#xff1a; web服务器&#xff0c;本质上是一个软件&#xff0c;主要作用有两个 1.web服务器&#xff0c;接受用户的HTTP请求&#xff0c;将请求转发到servlet。 2.servlet容器&#xff0c;存储servlet。处理业务&#xff0c;响应到客户端。 和tomcat相似的软件…

Tomcat 详细讲解安装(让我们进一步了解tomcat作用)

今天小编主要给大家讲解一下tomcat的作用&#xff0c;了解什么是tomcat以及tomcat目录结构及作用。 不知道如何下载tomcat的家人们可以看这篇博客&#xff0c;点击下方链接&#xff1a; JavaWeb eclipse-web如何安装&如何下载jdk&如何下载tomcat(详细讲解)_客行.的博客…

【JAVAWeb】Tomcat

1 Tomcat的介绍 1.1 Tomcat的简介 Tomcat服务器是一个开源的轻量级Web应用服务器&#xff0c;在中小型系统和并发量小的场合下被普遍使用&#xff0c;是开发和调试Servlet、JSP 程序的首选也是绝大多数JavaEE开发工程师所必用的 1.2 Tomcat的作用 Tomcat的作用是作为Web服务器部…

perl脚本练习

题目&#xff1a; 12 34 56 78 24 65 87 90 76 11 67 87 100 89 78 99 求出文本中数字的最大、小值 我看很多的朋友都用shell的awk实现了&#xff0c;但本人对awk不是很了解&#xff0c;试着用perl简单的写了一下&#xff0c;也能实现 code: #!/usr/bin/perl -w use str…

Perl脚本入门

Perl脚本入门——标量和标量变量 内容 由于项目中需要使用到Perl&#xff0c;本着是知识就学它的心。开始了我的菜鸟学飞之旅。以下内容主要是从《O’Reilly:Perl语言入门 第7版&#xff08;中文版&#xff09;》书中所学&#xff0c;后续也会结合项目使用案例锻炼一下自己。…

perl脚本的参数输入

参数输入 关于perl脚本的参数输入一共有两个办法&#xff1a; use Getopt::Std 或者 use Getopt::Long (use的用法与import类似&#xff0c;这里就不展开了) 对于上面两中方法&#xff0c;采用哪一种目前看来没有特别明显的区别&#xff0c;掌握其中一种&#xff0c;我觉得就…

perl脚本语言学习2——高级篇:正则表达式、线程、仿真脚本

文章目录 一、正则表达式1、元字符 二、模块三、面向对象编程1、package 四、多线程1、fork函数2、子进程间的通信 五、仿真脚本 一、正则表达式 1、元字符 m/.../&#xff1a;匹配语法&#xff0c;把元字符放在中间 字符含义\转义字符\b匹配单词边界\B非单词边界\d数字&…

脚本入门(2)-perl脚本

一、注释 pod 这里的是注释 cut 二、chomp 去掉换行符&#xff08;\n&#xff09; 去掉$/ chomp($text<STDIN>); #读入&#xff0c;但不含换行符 三、<STDIN> $line <STDIN>; #一次读一行&#xff0c;性能好。 <STDIN>会带有换行符&…

Perl脚本语言学习1:

一、perl基本要素&#xff1a;数字和字符串 perl语言的核心是正则表达式&#xff0c;在文本处理上非常有优势&#xff0c;与python类似&#xff0c;但语法不同&#xff0c;perl的语法很灵活&#xff0c;用多了才会觉得好用。 第一篇博文就这么潦草的结束&#xff0c;慢慢摸索&…

Perl脚本编程

Perl脚本学习笔记 文章目录 Perl脚本学习笔记一、编写你的第一个Perl程序二、Perl的基本构件1.直接量2.标量变量3.表达式和运算符 三、控制程序流1.if 语句2.while 循环3.for 循环 四、列表与数组1.列表2.数组3.遍历数组4.数组排序 五、文件操作1.打开文件2.读取文件3.写入文件…

71.区分异步和多线程应用场景

初学者有时候会将异步和多线程混为一谈。如果对它们之间的区别不是很清楚&#xff0c;很容易写出下面这样的代码&#xff1a; private void buttonGetPage_Click(object sender, EventArgs e) { Thread t new Thread(() >{ var request HttpWebRequest.Create(&q…

多线程的简单实现和应用场景

main方法测试&#xff0c;定义for循环造假数据&#xff0c;定义time在方法结束后时间相减获取执行毫秒数&#xff0c;单线程跟多线程对比执行时间。 上图 我定义了2000000的数据量&#xff0c;可以看到单线程执行时间为6520毫秒&#xff0c;多线程&#xff08;3个&#xff09;执…

多线程的创建方式及多线程应用场景

本篇大概详解思路如下思维导图: 目录 在java程序中创建线程 start()和run()的区别 start()方法为啥不能被重复调用 创建线程的7种方式 多线程提高速度 多线程的使用场景 在java程序中创建线程 我们知道一个进程包括多个线程(pcb---每个线程对应一块pcb,一个进程包括多个p…

Java多线程的应用场景和应用目的举例

微信公众号&#xff1a;javafirst 01 通俗的解释一下多线程 多线程用于堆积处理&#xff0c;就像一个大土堆&#xff0c;一个推土机很慢&#xff0c;那么10个推土机一起来处理&#xff0c;当然速度就快了&#xff0c;不过由于位置的限制&#xff0c;如果20个推土机&#xff0…

多线程的使用场景

多线程的使用 使用线程池ExecutorService &#xff0c;exe.execute来开始线程&#xff0c;thread,runabble,callabble都可以&#xff0c;isTerminated来判断线程池的线程是否都执行完毕 Testpublic void testThread() throws InterruptedException {//创建线程池ExecutorServi…

【多线程/线程池】项目中实际应用场景

场景一、快速响应用户的请求 描述: 用户发起的实时请求&#xff0c;服务追求响应时间。比如说用户要查看一个商品的信息&#xff0c;那么我们需要将商品维度的一系列信息如商品的价格、优惠、库存、图片等等聚合起来&#xff0c;展示给用户。 场景二、快速处理批量的任务 描…

多线程相关实例(多线程经典应用场景)

转载&#xff0c;from 网络&#xff0c;未能找到原创人员&#xff0c;只找到一个转载 https://blog.csdn.net/u013521220/article/details/79648270 多线程实例目录 相关知识&#xff1a;经典案例一&#xff1a;三个售票窗口共同出售20张票经典案例二&#xff1a;AB两人共用一个…

多线程的实现和使用场景

多线程的实现和使用场景 一、多线程实现方式1.1 Thread实现1.2 Runnable实现 二、多线程的使用场景1.多线程使用场景1.1 多线程应该最多的场景&#xff1a;1.2多线程的常见应用场景&#xff1a; 2.多线程小案列2.1 多线程计算2.2 多线程实现卖票小程序2.3多线程卖票小程序优化2…