Tomcat服务器


Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目
官方网站 https://tomcat.apache.org/
由Apache、Sun 和其他公司及个人共同开发而成
Sun 参与和支持 最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,
Tomcat 技术先进、性能稳定,免费,深受Java 爱好者的喜爱并得到软件开发商的认可
成为目前比较流行的Web 应用服务器
Tomcat 开源的Web应用服务器,轻量级应用服务器,中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
Tomcat是Apache 服务器的扩展,运行时是独立运行的,运行tomcat作为一个与Apache 独立的进程单独运行
Apache 为HTML页面服务,而Tomcat 运行JSP 页面和Servlet
Tomcat和IIS等Web服务器一样,处理HTML页面,还是Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式
Tomcat处理静态HTML的能力不如Apache服务器
服务器流程:客户端请求 -> tomcat服务器->java程序 ->返回相对应的html
Apache Tomcat
The Apache Tomcat® software is an open source implementation of the Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket technologies. The Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket specifications are developed under the Java Community Process.
The Apache Tomcat software is developed in an open and participatory environment and released under the Apache License version 2. The Apache Tomcat project is intended to be a collaboration of the best-of-breed developers from around the world. We invite you to participate in this open development project. To learn more about getting involved.
Apache Tomcat software powers numerous large-scale, mission-critical web applications across a diverse range of industries and organizations. Some of these users and their stories are listed on the PoweredBy wiki page.
Apache Tomcat, Tomcat, Apache, the Apache feather, and the Apache Tomcat project logo are trademarks of the Apache Software Foundation.

tomcat主要目录
/bin – Tomcat: 脚本存放目录(如启动、关闭脚本)  *.sh 文件用于 Unix 系统; *.bat 文件用于 Windows 系统
/conf – Tomcat: 配置文件目录
/lib--Tomcat:tomcat服务器所需要的各个库文件
/logs – Tomcat: 默认日志目录
/webapps – Tomcat:web应用程序存放的目录,web项目保存到此目录即可发布
/work-- Tomcat:临时文件夹,生成所有的临时文件(*.java、*.class)
Web工程发布的目录结构
|-- myWebApp# 站点根目录
 |-- META-INF # META-INF 目录
 | `--MANIFEST.MF # 配置清单文件
 |-- WEB-INF # WEB-INF 目录
 | |-- classes# class文件目录
 | | |--*.class # 程序需要的class 文件
 | | `-- *.xml# 程序需要的xml 文件
 | |-- lib # 库文件夹
 | | `-- *.jar# 程序需要的jar 包
| `-- web.xml # Web应用程序的部署描述文件
 |-- <userdir># 自定义的目录
 |-- <userfiles># 自定义的资源文件
myWebApp:工程发布文件夹。其实每个 war 包都可以视为 myWebApp的压缩包
META-INF:META-INF 目录用于存放工程自身相关的一些信息,元文件信息,通常由开发工具,环境自动生成
WEB-INF:Java web应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录
/WEB-INF/classes:存放程序所需要的所有 Java class 文件
/WEB-INF/lib:存放程序所需要的所有 jar 文件
/WEB-INF/web.xml:web 应用的部署配置文件
是工程中最重要的配置文件,描述 servlet和组成应用的其它组件,及应用初始化参数、安全管理约束等

server.xml 配置

server.xml的结构
<Server>
 <service>
<Connector></Connector>
<Engine>
<Host>
<Context></Context>
</Host>
</Engine>
</service>
</Server>

Service中可以有多个Connector元素,Host中可以有多个Context元素


Server元素

Server 元素表示整个 Catalina servlet 容器。

必须是 conf/server.xml 配置文件中的根元素。属性代表了整个 servlet 容器的特性

Server属性表

属性

描述

备注

className

这个类必须实现org.apache.catalina.Server接口。

默认  org.apache.catalina.core.StandardServer

address

服务器等待关机命令的TCP / IP地址。如果没有指定地址,则使用localhost。


port

服务器等待关机命令的TCP / IP端口号。设置为-1以禁用关闭端口。


shutdown

必须通过TCP / IP连接接收到指定端口号的命令字符串,以关闭Tomcat。


Service元素

Service元素表示一个或多个连接器组件的组合,这些组件共享一个用于处理传入请求的引擎组件。Server 中可以有多个 Service。

属性

描述

备注

className

这个类必须实现org.apache.catalina.Service接口

默认 
org.apache.catalina.core.StandardService

name

此服务的显示名称,如果用标准 Catalina 组件,将包含在日志消息中。
与特定服务器关联的每个服务的名称必须是唯一的。


conf/server.xml 配置文件示例

<?xml version="1.0" encoding="UTF-8"?>

<Serverport="8080"shutdown="SHUTDOWN">

<Servicename="xxx">

...

</Service>

</Server>

Executor元素

Executor表示可以在Tomcat中的组件之间共享的线程池。

属性

描述

备注

className

这个类必须实现org.apache.catalina.Executor接口

默认 org.apache.catalina.core.StandardThreadExecutor

name

线程池名称。

要求唯一, 供Connector元素的executor属性使用

namePrefix

线程名称前缀。


maxThreads

最大活跃线程数。

默认200

minSpareThreads

最小活跃线程数。

默认25

maxIdleTime

当前活跃线程大于minSpareThreads,空闲线程关闭等待最大时间

默认60000ms

maxQueueSize

线程池满情况下的请求排队大小。

默认Integer.MAX_VALUE

<Servicename="xxx">

  <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"maxThreads="300"minSpareThreads="25"/>

</Service>

Connector元素

Connector代表连接组件
Tomcat 支持三种协议:HTTP/1.1、HTTP/2.0、AJP

属性

说明

备注

asyncTimeout

Servlet3.0规范中的异步请求超时

默认30s

port

请求连接的TCP Port

设置为0,则会随机选取一个未占用的端口号

protocol

协议. 设置为 HTTP/1.1接模型在NIO和APR/native中自动根据配置选择


URIEncoding

对URI的编码方式.

系统变量org.apache.catalina.STRICT_SERVLET_COMPLIANCE为true,用 ISO-8859-1编码;未设置此系统变量且未设置此属性, 用UTF-8编码

useBodyEncodingForURI

是否采用指定的contentType而不是URIEncoding来编码URI中的请求参数


以下属性在标准的Connector(NIO, NIO2 和 APR/native)中有效:

标准的Connector属性表

属性

说明

备注

acceptCount

当最大请求连接maxConnections满时的最大排队大小

默认100,注意此属性和Executor中属性maxQueueSize的区别.这个指的是请求连接满时的堆栈大小,Executor的maxQueueSize指的是处理线程满时的堆栈大小

connectionTimeout

请求连接超时

默认60000ms

executor

指定配置的线程池名称


keepAliveTimeout

keeAlive超时时间

默认值为connectionTimeout配置值.-1表示不超时

maxConnections

最大连接数

连接满时后续连接放入最大为acceptCount的队列中. 对 NIO和NIO2连接,默认值为10000;对 APR/native,默认值为8192

maxThreads

如果指定了Executor, 此属性忽略;否则为Connector创建的内部线程池最大值

默认200

minSpareThreads

如果指定了Executor, 此属性忽略;否则为Connector创建线程池的最小活跃线程数

默认10

processorCache

协议处理器缓存Processor对象的大小

-1表示不限制.当不使用servlet3.0的异步处理情况下: 如果配置Executor,配置为Executor的maxThreads;否则配置为Connnector的maxThreads. 如果使用Serlvet3.0异步处理, 取maxThreads和maxConnections的最大值

Context元素

Context元素表示Web应用程序,在特定的虚拟主机中运行。Web应用程序基于Web应用程序存档(WAR)文件,或包含相应的解包内容的相应目录
Servlet规范中所述。

 

属性

说明

备注

altDDName

web.xml部署描述符路径

默认 /WEB-INF/web.xml

docBase

Context的Root路径

和Host的appBase相结合, 可确定web应用的实际目录

failCtxIfServletStartFails

同Host中的failCtxIfServletStartFails, 只对当前Context有效

默认为false

logEffectiveWebXml

是否日志打印web.xml内容(web.xml由默认的web.xml和应用中的web.xml组成)

默认为false

path

web应用的context path

根路径,则配置为空字符串(""), 不能不配置

privileged

是否使用Tomcat提供的manager  servlet


reloadable

/WEB-INF/classes/ 和/WEB-INF/lib/  目录class文件发生变化是否自动重新加载

默认为false

swallowOutput

true情况下, System.out和System.err输出将被定向到web应用日志中

默认为false

Engine元素

Engine元素表示与特定的Catalina服务相关联的整个请求处理机器
它接收并处理来自一个或多个连接器的所有请求,并将完成的响应返回给连接器,以便最终传输回客户端

 Engine元素

属性

描述

备注

defaultHost

默认主机名,标识将处理指向此服务器上主机名称但未在此配置文件中配置的请求的主机。

这个名字必须匹配其中一个嵌套的主机元素的名字属性

name

此引擎的逻辑名称,用于日志和错误消息。

在同一服务器中使用多个服务元素时,每个引擎必须分配一个唯一的名称

Host元素

Host元素表示虚拟主机,是一个服务器的网络名称(www.mycompany.com)与运行Tomcat的特定服务器的关联

 

属性

说明

备注

name

名称

用于日志输出

appBase

虚拟主机对应的应用基础路径

绝对路径, 或${CATALINA_BASE}相对路径

xmlBase

虚拟主机XML基础路径,里面应该有Context xml配置文件

绝对路径, 或${CATALINA_BASE}相对路径

createDirs

当appBase和xmlBase不存在时,是否创建目录

默认为true

autoDeploy

是否周期性的检查appBase和xmlBase并deploy web应用和context描述符

默认为true

deployIgnore

忽略deploy的正则


deployOnStartup

Tomcat启动时是否自动deploy

默认为true

failCtxIfServletStartFails

为true,任何load-on-startup>=0的servlet启动失败,则其对应的Contxt也启动失败

默认为false

Cluster元素

Tomcat集群配置

部署方式

这种方式要求本地必须安装 Tomcat

将打包好的 war 包放在 Tomcat 安装目录下的 webapps 目录下,bin 目录下执行 startup.bat (windows)或 startup.sh(linux) ,
Tomcat 会自动解压 webapps 目录下的 war 包。

http://公网IP:8080/xxx (xxx 是 war 包文件名)

步骤中的 war 包解压路径、启动端口以及一些更多的功能都可以修改配置文件来定制 (主要是 server.xml或 context.xml 文件)


包含Tomcat 服务器
XAMPP是一个易于安装的Apache发行版,其中包含MariaDB、PHP和Perl。仅 下载并启动安装程序。就这么简单
https://www.apachefriends.org/zh_cn/download.html