当前位置:   article > 正文

Tomcat的简介、版本选择与安装、配置与运行(启动、关闭、重启、配置成开机自启动服务)

tomcat

简介

官网简介

官网介绍翻译:
Apache Tomcat是一个对于 【Jakarta Servlet、Jakarta 服务器页面、Jakarta 表达式语言?、Jakarta WebSocket、Jakarta 注解和Jakarta 身份验证规范】的开源实现。

Jakarta EE平台(Jakarta EE platform)是Java EE平台(Java EE platform)的演变。Tomcat 10及更高版本实现了作为Jakarta EE一部分开发的规范。Tomcat 9及更早版本实现了为Java EE一部分发展的规范。

Apache Tomcat软件是在开放和参与式环境中开发的,并在Apache许可证版本2下发布。Apache Tomcat项目旨在与来自世界各地的一流开发人员合作。我们邀请您参与这个开放式开发项目。要了解有关参与的更多信息,请单击此处。

Apache Tomcat软件为各种行业和组织中的大量大规模、任务关键型web应用程序提供了支持。PoweredBy wiki页面上列出了其中一些用户及其故事。

Apache Tomcat、Tomcat、Apache、Apache羽毛和Apache Tomcat项目徽标是Apache软件基金会的商标。

官网介绍原文:
The Apache Tomcat® software is an open source implementation of the Jakarta Servlet, Jakarta Server Pages, Jakarta Expression Language, Jakarta WebSocket, Jakarta Annotations and Jakarta Authentication specifications. These specifications are part of the Jakarta EE platform.

The Jakarta EE platform is the evolution of the Java EE platform. Tomcat 10 and later implement specifications developed as part of Jakarta EE. Tomcat 9 and earlier implement specifications developed as part of Java EE.

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, click here.

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.

关于jakarta,在网上博客查到的资料,如下所示。
 
JavaEE目前最高版本是JavaEE8。
Oracle将JavaEE规范捐献给Apache了
Apache把JavaEE换名了,以后的版本就不叫JavaEE了,该叫jakartaEE,所以JavaEE8以后的版本就没有JavaEE了,叫做jakartaEE

  • JavaEE8对应的Servlet类名是:javax.servlet.Servlet
  • JakartaEE9对应的Servlet类名是:jakarta.servlet.Servlet

网上博客简介

Tomcat服务器是一个免费、开源的Web应用服务器,是基于JAVA开发的WEB服务器软件,主要解析JAVA代码属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。

Tomcat 的核心功能有两个,分别是【负责接收和响应请求】和【负责处理请求】

  • 连接器 Connector:用于负责接收和响应请求。
  • 容器 Container:用于负责处理请求。
    连接器和容器相辅相成,一起构成了基本的 web 服务 Service——【所以每个service要实现接收、响应和处理请求两种功能?】。每个 Tomcat 服务器可以管理多个 Service

一般来说,Tomcat虽然和【Apache或者Nginx】这些Web服务器一样,具有处理HTML页面的功能。但是由于其处理静态HTML的能力远不及Apache或者Nginx,所以Tomcat通常是作为一个Servlet和JSP容器,单独运行在后端

概括:

  1. 免费的、开放源代码的Web应用服务器
  2. Apache软件基金会(Apache Software Foundation)Jakarta项目中的一个核心项目
  3. 由Apache、Sun和一些公司及个人共同开发而成
  4. 深受Java爱好者的喜爱,并得到部分软件开发商的认可
  5. 目前比较流行的Web应用服务器

组成Tomcat的三大组件

Tomcat 由一系列的组件构成,其中核心的组件有三个

  • Web容器:完成Web服务器的功能。
  • Servlet 容器:名字为catalina, 用于处理Servlet代码
  • JSP容器:用于将JSP动态网页翻译成Servlet代码。
Web容器
Servlet 容器

Servlet 容器的内容,待补;
Java Servlet 相关资料可参考此博客

JSP容器

JSP网页相关内容可参考此博客

Tomcat 功能组件结构

  • Connector:负责接收和响应请求。它是Tomcat与外界的交通枢纽,监听【Tomcat配置文件中指定的】端口(默认为8080)接收外界请求,并将请求处理后传递给容器做业务处理,最后将容器处理后的结果响应给外界。
  • Container:负责对内处理业务逻辑。其内部由 Engine、Host、Context和Wrapper 四个容器组成,用于管理和调用 Servlet 相关逻辑。Container容器的分类、各自作用、配置及其间关系详见此博客
  • Service:对外提供的 Web 服务。主要包含 Connector 和 Container 两个核心组件,以及其他功能组件。Tomcat 可以管理多个 Service,且各 Service 之间相互独立。
    在这里插入图片描述
    在这里插入图片描述

Tomcat的运行流程

Servlet在同步情况下的处理过程

【Tomcat的客户端请求】 由 管道pipeline 处理,最后会通过Wrapper容器的管道,如下图一所示。此时它会调用Servlet实例的service方法进行逻辑处理,处理完后响应客户端,如下图二所示。整个处理由Tomcat的【Executor线程池的】线程 处理,而线程池的最大线程数是有限制的,所以这个处理过程越短,就能越快地将线程释放回线程池。但如果Servlet中的处理逻辑耗时越长,就会导致长期地占用Tomcat的处理线程池,最终影响Tomcat的整体处理能力。为了解决上面的问题,我们可以引入支持【异步的Servlet(即开启一个线程)】,如下一章节所示。
在这里插入图片描述
在这里插入图片描述

Servlet在异步情况下的处理过程

当客户端请求到来时,首先通过管道,然后进入到Wrapper容器的管道,再调用Servlet实例的service后,创建一个异步Servlet将耗时的逻辑操作封装起来,交给用户自己定义的线程池。这样就可以避免因Servlet中的处理逻辑耗时长而影响Tomcat的整体处理能力。
在这里插入图片描述

版本选择与安装

版本选择

官网中给出了Tomcat各版本的选择推荐表,列出了与各个JDK版本兼容的情况,如下图所示。

superseded:supersede过去分词,是“作废的、被取代的”之意。所以支持JDK 1.8 Tomcat就应该选择 Tomcat 9.0 系列中的最新发布版 Tomcat 9.0.83

在这里插入图片描述

Tomcat的下载

下载地址

此处先给出Tomcat官网?待确认,点击链接后,如下图所示。
在这里插入图片描述

下载款式

在下图红框中选择要下载的款式,比如Tomcat 9,在右侧详情页面中提供了Binary Distributions(已编译、可以直接使用的二进制版本)和Source Code Distributions(需要在自己的运行环境下先编译、再使用的源代码版本)。
在这里插入图片描述

但是Binary Distributions中又提供了四种版本,如上图所示。其区别与选择依据为(出自网上博客,待确认):

  • Core:Tomcat正式的二进制发布版本,这就是我们是日常说的Tomcat,根据自己操作系统选择下载即可。
  • Full documentation:完整的说明文档,不过只有Linux版
  • Deployer:是基于Tomcat的web应用的发布器,就是用来将JavaEE应用动态发布到Tomcat时的命令行的工具,详见下方注释。如果不需要动态发布,则不需要下载。
  • Embedded:嵌入式版本

Tomcat中Web应用的相关概念。

  • 发布:指的是把一个Web应用安装到Tomcat服务器中的过程。
     

在Tomcat中发布Web应用可以有两种方式:

  1. 静态发布:指的是在Tomcat未启动的时候,把做好的Web应用直接复制到Tomcat服务器中。
  2. 动态发布:分为两种情况
    - 2.1 指的是在Tomcat已经启动运行的情况下,通过Tomcat的自动部署功能动态操作已经发布的Web应用.
    - 2.2 指的是通过Tomcat Manager这个Web应用通过远程把做好的Web应用发布到正在运行的Tomcat中去。
    Deployer的作用就在动态发布Web应用到Tomcat中去的时候体现出来的。
    Deployer是一个命令行的工具,它可以编译、验证Web应用,还可以把Web应用的全部资源打包到War文件中。

在这里插入图片描述

Tomcat安装及目录结构

将Tomcat的安装包解压到磁盘的任意位(非中文无空格)后,目录结构如下图所示。
在这里插入图片描述

conf目录

/conf目录用于存放配置文件,如上图所示。其内包含server.xmlweb.xmlcontext.xml等配置文件,其中最重要的是server.xml

  • server.xml:主要的配置文件,包含Service,Connector,Engine,Realm,Valve,Hosts主组件的相关配置信息。
  • context.xml:所有host的默认配置信息。
  • tomcat-user.xml:Realm认证时用到的相关角色、用户和密码等信息
  • web.xml:用于配置servlet规范标准的配置文件。缺省的web app配置,WEB-INF/web.xml会覆盖该配置。

webapps目录

webapps目录是Tomcat默认的站点根目录——即访问该Tomcat的地址路径从以webapps目录下的位置开始。

Tomcat安装服务(配置 环境变量CATALINA_HOME和path)

安装服务的方法详见此博客中的“解决方案”章节

Tomcat安装后运行所需的环境变量

  • CATALINA_HOME:Tomcat的安装根目录,其作用是用来确定启动的tomcat,不管是启动哪个tomcat,实际上运行的都是catalina_home下的tomcat,补入这篇博客

CATALINA_HOME环境变量的名称来源补入这篇博客
CATALINA容器

  • Path:添加%CATALINA_HOME%\bin,还有博客说%CATALINA_HOME%\lib; % CATALINA_HOME%\lib\servlet-api.jar; %CATALINA_HOME%\lib\jsp-api.jar;也要添加如Path环境变量中,待确认。CATALINA_HOME变量的用途只是为了解耦配置Path变量?自认
  • TOMCAT_HOME:变量值为Tomcat安装目录,尚不确定是否必须配置,作用是什么。
  • JRE_HOME:自己没有配置,也没有影响运行,不过有JDK的配置路径。

配置Tomcat

对Tomcat的配置,实际是针对在此Tomcat的webapps文件夹中部署的多个项目在资源、运行等方面的共同配置

server.xml是指Tomcat根目录下的/conf/server.xml文件,其是Tomcat的配置文件。自认,对Tomcat的配置均是通过修改server.xml文件中的内容实现的。

server.xml文件内容及各属性含义与取值详见此博客

配置成Windows开机自启动的服务

设置方法详见此博客

配置Tomcat分配到的内存

Tomcat运行时,提示内存不足,如下图所示。

解决方案见此链接

设置Tomcat使用的端口

tomcat作为一个网络server端,它需要暴露一个socket端口来accept客户端的链接,可以通过port指定。在上面链接给出的的配置文件全文内容中,<Server>标签下有两个<Connector>,这是因为两者针对不同的协议,上面为响应HTTP协议指定使用的端口号,比如8089;下面是响应AJP协议时使用的端口号,本文是8009。相关内容如下所示,无关内容已剔除。

<Server port="8005" shutdown="SHUTDOWN">
	<Service name="Catalina">
	<Connector port="8080" protocol="HTTP/1.1"  connectionTimeout="20000" maxhttpheadersize="102400" " redirectPort="8443"/>
	<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
	</Service>
</Server>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

<Connector>标签中的各属性详见上一小节“Tomcat的配置文件server.xml全文内容”

通过设定的【响应http网络协议的】端口访问部署的工程

通过http://localhost:11000访问服务器看是否启动、配置通过。
在这里插入图片描述

设定Tomcat的运行模式

Tomcat的默认运行模式为BIO(blocking I/O)模式,即阻塞式I/O操作。补入这篇博客

配置Tomcat用户信息

Tomcat的运行(启动、关闭、重启)

启动Tomcat

Windows

双击Tomcat根目录下bin文件夹中的startup.bat

Linux

运行Tomcat根目录下bin文件夹中的startup.sh

查看确认Tomcat是否启动

用浏览器访问http://localhost:8080或者http://127.0.0.1:8080。如果看到Tomcat自带的一个JSP页面,则表示安装成功,如下图所示。

8080是默认端口号,如果和其他软件冲突,去配置文件中server.xml中修改端口号即可

Tomcat启动中出现的问题

Tomcat启动窗口乱码

在这里插入图片描述
解决方案详见此博客

Tomcat启动一闪而过

组合拳:
https://www.cnblogs.com/zhangzhixi/archive/2020/12/22/14174337.html
https://www.cnblogs.com/zzmb/p/8258364.html

项目尚未启动完成,Tomcat已停止并弹窗提醒——修改默认设置时的启动时间限制

当开发的项目比较大时,Eclipse经常会报错,错误信息为:Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds,就是在超过45秒内项目没启动完,如下图所示。
在这里插入图片描述
这时就需要修改配置文件sever.xml中的启动时长。文件所在路径为你的eclipse的workspace:Eclipse-Workspace/.metadata/.plugins/org.eclipse.wst.server.core/servers.xml
在这里插入图片描述
将文件中的start-timeout改为100。
在这里插入图片描述

Tomcat publishing failed

问题:对话框提示“Could not delete F:\Eclipse-Workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\jeecg-nomaven\WEB-INF\lib\freemarker-2.3.19.jar. May be locked by another process.”,补图。

处理方法:clean Tomcat即可,补入这篇博客

Tomcat的关闭及重启

Windows

在Tomcat启动后、正在运行中的状态下,关闭Tomcat

  1. 双击Tomcat根目录下bin文件夹中的shutdown.bat

在Tomcat关闭后、已停止运行的状态下,再启动Tomcat

  1. 双击Tomcat根目录下bin文件夹中的startup.bat

Linux

在Tomcat启动后、正在运行中的状态下,关闭Tomcat

  1. 运行Tomcat根目录下bin文件夹中的shutdown.sh

在Tomcat关闭后、已停止运行的状态下,再启动Tomcat

  1. 运行Tomcat根目录下bin文件夹中的startup.sh

Tomcat的运行流程

浏览器访问 http://.qhw.com:8080/ 页面显示This is kgc page!
HTTP 请求过程:

  1. Connector 连接器监听的端口是 8080。由于请求的端口和监听的端口一致,连接器接受了该请求。
  2. 因为引擎的默认虚拟主机是 www.kgc.com,并且虚拟主机的目录是webapps。所以请求找到了 tomcat/webapps 目录。
  3. 访问的路径为根路径,URI 为空,即空是 Web 程序的应用名,也就是 context。此时请求找到 /usr/local/tomcat/webapps/kgc 目录,解析 index.jsp 并返回。

下方也给出了两张Tomcat运行流程图,如下所示。
在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/650256
推荐阅读
相关标签
  

闽ICP备14008679号