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接口 | 默认 |
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
尊贵的董事大人
英文标题不为空时 视为本栏投稿
需要关键字 描述 英文标题