您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

瞅瞅,这还是你熟悉的Tomcat吗?

时间:2022-07-08 09:29:48  来源:  作者:java7794Vi
瞅瞅,这还是你熟悉的Tomcat吗?

 

一、Tomcat 架构概览

瞅瞅,这还是你熟悉的Tomcat吗?

 

1、Tomcat是什么?

Apache Tomcat软件是Jakarta Servlet、 Jakarta Server Pages、 Jakarta Expression Language、 Jakarta WebSocket、 Jakarta Annotations和 Jakarta Authentication 规范的开源实现 。这些规范是 Jakarta EE 平台的一部分。

tomcat是一个容器,用于承载Servlet,Tomcat就是实现了部分J2EE规范的服务器。

Jakarta EE是J2 EE的延续,其中Tomcat10以后都是Jakarta EE,Tomcat9以前都是都是J2EE。

2、Tomcat文件结构

2.1、目录和文件

  • bin:二进制执行文件,脚本
  • conf:配置文件
  • logs: 日志文件
  • webApps:web应用存放位置
  • lib:共享文件
  • CATALINA_HOME:安装根目录,CATALINA是tomcat核心所在。存放不可变文件,只读文件,属于tomcat的共用基础配置。
  • CATALINA_BASE:配置文件的目录,可以通过改变配置来解决单机运行多个tomcat而不需要解压。

2.2、启动类

  1. 找到tomcat下面bin目录
  2. 查看启动脚本,windowsstartup.bat,mac系统为startup.sh,内容不需要过多关注,直接查看最后一句
1.exec "$PRGDIR"/"$EXECUTABLE" start "$@"

2.EXECUTABLE=catalina.sh
  • 上述为脚本内容,第一行执行了变量EXECUTABLE中的start,第二行为EXECUTABLE变量具体内容,可以看到具体执行的还是catalina.sh中的start方法。
  • 找到catalina.sh脚本中的start
if [ "$1" = "debug" ] ; then
  if $os400; then
    echo "Debug command not available on OS400"
    exit 1
  else
    shift
    if [ "$1" = "-security" ] ; then
      if [ $have_tty -eq 1 ]; then
        echo "Using Security Manager"
      fi
      shift
      eval exec ""$_RUNJDB"" ""$CATALINA_LOGGING_CONFIG"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" 
        -D$ENDORSED_PROP="$JAVA_ENDORSED_DIRS" 
        -classpath "$CLASSPATH" 
        -sourcepath "$CATALINA_HOME"/../../java 
        -Djava.security.manager 
        -Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy 
        -Dcatalina.base="$CATALINA_BASE" 
        -Dcatalina.home="$CATALINA_HOME" 
        -Djava.io.tmpdir="$CATALINA_TMPDIR" 
        org.apache.catalina.startup.Bootstrap "$@" start
    else
      eval exec ""$_RUNJDB"" ""$CATALINA_LOGGING_CONFIG"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" 
        -D$ENDORSED_PROP="$JAVA_ENDORSED_DIRS" 
        -classpath "$CLASSPATH" 
        -sourcepath "$CATALINA_HOME"/../../java 
        -Dcatalina.base="$CATALINA_BASE" 
        -Dcatalina.home="$CATALINA_HOME" 
        -Djava.io.tmpdir="$CATALINA_TMPDIR" 
        org.apache.catalina.startup.Bootstrap "$@" start
    fi
  fi
  • 这个脚本内容比较多,不必逐行去看,直接找到start相关内容,也就是如上内容,可以看到最终找到了
  • org.apache.catalina.startup.Bootstrap

 

2.3、xml文件

  • web.xml:tomcat的web.xml是所有web应用的默认值都取自conf/web.xml,自定义的web.xml是可以覆盖该默认值。
  • context.xml:每个web应用都会加载conf/context.xml
  • <Context> <WatchedResource>WEB-INF/web.xml</WatchedResource> <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> </Context>
  • 一个context代表了一个web应用,web应用的目录:
    • WEB-INF:web的元数据目录
    • META-INF:元数据目录
    • WatchedResource:监听资源,监听了WEB-INF/web.xml和${catalina.base}/conf/web.xml,发现改动后,随即马上重新加载应用。

2.4、work目录

jsp最终是要转变为Servlet,而Servlet是一个java类,类是需要编译处理的,work目录就是用来保存jsp生成的Servlet文件

这个目录就是工作目录。

2.5、其他目录

  • java:源码文件目录
  • logs:运行时产生的日志文件
  • modules第三方模块化依赖
  • res:资源目录文件,如:欢迎页,图片等
  • test:测试包
  • webapp:存放项目文件
  • 以下文件为tomcat默认自带的
    • docs:文档页
    • Host-manager:主机管理也
    • Manager:总管理页
    • ROOT:root跟页

3、Tomcat组件

3.1、server组件

server组件定义的是一个tomcat实例

<Server port="8005" shutdown="SHUTDOWN"></Server>

默认监听在8005端口以接收shutdown命令。

要启用多个tomcat实例,将它们监听在不同的端口即可。

这个端口的定义为管理员提供一个关闭实例的便捷途径,可以直接te.NET至此端口使用SHUTDOWN命令关闭此实例。不过基于安全角度的考虑,通常不允许远程进行。

3.2、service组件

service组件中封装connector和container由它们组成一个service向外提供服务

<Service name="Catalina"></Service>

3.3、Connection组件

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

连接器用于接收客户端发送的请求并返回响应给客户端。

一个service中可以有多个connector。有多种connector,常见的为http/1.1,http/2和ajp(apache jserv protocol)。在tomcat中,ajp连接协议类型专用于tomcat前端是apache反向代理的情况下。 因此tomcat可以扮演两种角色:

  • Tomcat仅作为应用程序服务器(等价servlet容器,动态jsp;包括servlet和ejb):请求来自于前端的web服务器,这可能是Apache, IIS, Nginx等;
  • Tomcat既作为web服务器(解析http协议,响应客户端,静态;非处理动态(委托)),也作为应用程序服务器:请求来自于浏览器。

3.4、Engline组件

<Engine name="Catalina" defaultHost="localhost">
</Engine>
​
<Engine name="Standalone" defaultHost="localhost" jvmRoute="TomcatA">
</Engine>

engine是service组件中用来分析协议的引擎机器,它从一个或多个connector上接收请求,并将请求交给对应的虚拟主机进行处理,最后返回完整的响应数据给connector,通过connector将响应数据返回给客户端。

只有一个engine元素必须嵌套在每个service中,且engine必须在其所需要关联的connector之后

一个service中只允许有一个engine。

3.5、Host组件

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
</Host>

host容器用来定义虚拟主机。

engine从connector接收到请求进行分析后,会将相关的属性参数传递给对应的(筛选方式是从请求首部的host字段和虚拟主机名称进行匹配)虚拟host进行处理。

如果没有合适的虚拟主机,则传递给默认虚拟主机。

因此每个容器中必须至少定义一个虚拟主机,且必须有一个虚拟主机和engine容器中定义的默认虚拟主机名称相同。



Tags:Tomcat   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一、Tomcat 架构概览 1、Tomcat是什么?Apache Tomcat软件是Jakarta Servlet、 Jakarta Server Pages、 Jakarta Expression Language、 Jakarta WebSocket、 Jakarta Annota...【详细内容】
2022-07-08  Tags: Tomcat  点击:(163)  评论:(0)  加入收藏
https分为单项认证和双向认证。一般https页面上的访问都是单项认证,服务端发送数字证书给客户端,客户单方面验证。而服务端不做验证。而双向认证,需要双方都有证书,然后发送给对...【详细内容】
2022-05-29  Tags: Tomcat  点击:(143)  评论:(0)  加入收藏
Tomcat10升级介绍Tomcat10 修补了之前版本的漏洞,主要是javax的漏洞,导致使用javax jar包的项目不能直接部署,需要使用官方工具转换。Apache官网提供转换程序 https://github.c...【详细内容】
2022-05-26  Tags: Tomcat  点击:(492)  评论:(0)  加入收藏
介绍作为常用的http协议服务器,tomcat应用非常广泛。tomcat也是遵循Servelt协议的,Servelt协议可以让服务器与真实服务逻辑代码进行解耦。各自只需要关注Servlet协议即可。 对...【详细内容】
2022-05-11  Tags: Tomcat  点击:(147)  评论:(0)  加入收藏
org.apache.catalina.startup.Catalina // When the &#39;engine&#39; is found, set the parentClassLoader.digester.addRule("Server/Service/Engine",...【详细内容】
2022-04-19  Tags: Tomcat  点击:(105)  评论:(0)  加入收藏
image.pngTomcat的启动核心流程&emsp;&emsp;前面给大家介绍了Tomcat中的生命周期的设计,掌握了这块对于我们分析Tomcat的核心流程是非常有帮助的,也就是我们需要创建相关的核...【详细内容】
2022-02-28  Tags: Tomcat  点击:(123)  评论:(0)  加入收藏
1、一个简单的 HTTP 服务器在Web应用中,浏览器请求一个URL,服务器就把生成的HTML网页发送给浏览器,而浏览器和服务器之间的传输协议是HTTP,那么接下来我们看下如何用Java来实现...【详细内容】
2022-02-25  Tags: Tomcat  点击:(129)  评论:(0)  加入收藏
1、获取SpringBoot内置Tomcat自动配置类:  在SpringBoot项目中引入spring-boot-starter-web依赖,就默认使用Tomcat容器,该依赖中引入 spring-boot-starter-tomcat、spring-we...【详细内容】
2022-02-22  Tags: Tomcat  点击:(225)  评论:(0)  加入收藏
1. 整体架构简析#如果将Tomca它的结构高度抽象的话,那么Tomcat其实可以看成只是有连接器(Connector)和容器(Container)两个组件构成。其中Connector组件负责在服务器端处理客户端...【详细内容】
2021-09-30  Tags: Tomcat  点击:(161)  评论:(0)  加入收藏
开源的 Java Web 应用服务器,实现了 Java EE(Java Platform Enterprise Edition)的部 分技术规范,比如 Java Servlet、Java Server Page、JSTL、Java WebSocket。Java EE 是 S...【详细内容】
2021-09-17  Tags: Tomcat  点击:(165)  评论:(0)  加入收藏
▌简易百科推荐
FTP服务软件安装包: vsftpd默认发布目录: /var/ftp协议接口: 21/tcp服务配置文件: /etc/vsftpd/vsftpd.conf报错id的解析:500 ##文件系统权限过大530 ##用户认证失败550 ##服务本...【详细内容】
2022-10-17  沪飘运维    Tags:FTP   点击:(9)  评论:(0)  加入收藏
一个朋友说他遇到这样一个问题,同样的服务器别人可以连接,自己却无法连接,捣鼓了好久都无法解决,很是郁闷。这个问题,刚好我之前也遇到过,后来完美解决了,这就给大家分享一下我的解...【详细内容】
2022-10-14  萌小翊  搜狐号  Tags:服务器   点击:(14)  评论:(0)  加入收藏
nginx 80端口重定向到443端口,也就是http访问自动跳转到https 配置如下:一、按照如下格式修改nginx.conf 配置文件,80端口会自动转给443端口,这样就强制使用SSL证书加密了。访问...【详细内容】
2022-10-09  运维技术站  今日头条  Tags:重定向   点击:(31)  评论:(0)  加入收藏
本文主要分享了如何搭建一个类似阿里云OSS的对象存储服务器。以windows环境下MinIO的搭建举例说明,linux环境下的搭建网上也有很多教程,请自行搜索相关资料。一、下载地址:http...【详细内容】
2022-10-07  吾日三省Java  今日头条  Tags:OSS服务器   点击:(32)  评论:(0)  加入收藏
一、软硬件准备:软件VMware软件,这里我以VMware&reg; Workstation 15 Pro为例;Centos镜像,这里我以centos8.3为例;硬件 二、在window系统部署linux系统,这里以centos为例1、下载...【详细内容】
2022-10-06  微笑橙子mR  今日头条  Tags:DHCP   点击:(27)  评论:(0)  加入收藏
对于新手建议可以弄一台免费的虚拟主机来学习网站搭建,在使用免费主机的这段时间你会掌握基本的建站技能,以及确定自己是否喜欢,下面推荐亲身用过的体验还不错的虚拟主机,均无广...【详细内容】
2022-10-01  智者饭团D  今日头条  Tags:虚拟主机   点击:(40)  评论:(0)  加入收藏
 Nginx 服务器的反向代理服务是其最常用的重要功能,由反向代理服务也可以衍生出很多与此相关的 Nginx 服务器重要功能,比如后面会介绍的负载均衡。本篇博客我们会先介绍 Ngin...【详细内容】
2022-09-28  微笑橙子mR  今日头条  Tags:nginx   点击:(33)  评论:(0)  加入收藏
使用在 Kubernetes 上运行的 Kafka 在 API 端点之间流式传输消息。 Apache Kafka 不仅仅是一个消息传递代理。它有一个由不同组件组成的丰富生态系统。有用于导入和导出数据...【详细内容】
2022-09-28  qaseven     Tags:Apache Kafka   点击:(22)  评论:(0)  加入收藏
作者:rangobai,腾讯CSIG数据工程师| 导语要有性能意识,量变引起质变,简单如一行日志都会在高并发的情况引发血案,考验着研发的技术功底一 案件背景9月的某个上午,业务侧突然反...【详细内容】
2022-09-28  腾讯技术工程    Tags:内存泄漏   点击:(23)  评论:(0)  加入收藏
如何搭建IIS+MySQL+PHP环境教程方法首先下载php-5.2.0-win32.zip,mysql-noinstall-5.0.22-win32.zip和phpMyAdmin-2.9.1.1-all-languages.zip。这三个文件的下载地址可以在百...【详细内容】
2022-09-27  艾西0FF0  今日头条  Tags:PHP环境   点击:(39)  评论:(0)  加入收藏
站内最新
站内热门
站内头条