Tomcat体系架构

Host-主机

**主机是网络名称(例如www.yourdomain.com)与Tomcat服务器的关联。**主机可以包含任意数量的上下文(即应用程序)。您可以在同一服务器上定义多个主机。例如,如果您已注册域yourdomain.com,则可以定义主机名,例如w1.yourdomain.comw2.yourdomain.com。请记住,只有域名服务器将其名称映射到计算机的IP地址时,才能从Internet访问它。

Tomcat的默认配置包括名为localhost的主机localhost和您的计算机之间的关联是通过在文件中写入条目来完成的C:\Windows\System32\drivers\etc\hosts

Host属性“ appBase ”定义Tomcat安装文件夹中的应用程序目录。然后,每个应用程序由该目录中的路径标识。唯一的例外是路径ROOT,它映射到空字符串。localhost的应用程序基目录是webapps。这意味着目录“ C:\Program Files\Apache Software Foundation\Tomcat 8.0\webapps\ROOT\” 中的应用程序由空字符串标识。因此,其URL为“ http://localhost:8080/”。对于驻留在ROOT以外的目录中的其他应用程序,如“ C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\myapp\”,URL就像“ http://localhost:8080/myapp/”。

属性**autoDeploy =“true”**属性表示如果appBase在Tomcat运行时将应用程序放在目录中,它将自动部署。

Engine–引擎

**引擎表示特定服务的请求处理管道。**由于服务可能具有多个连接器,因此引擎接收并处理来自这些连接器的所有请求,将响应交还给相应的连接器以传输到客户端。

引擎必须包含一个或多个主机,其中一个主机被指定为默认主机。默认的Tomcat配置包括引擎Catalina,它包含主机localhost(显然被指定为默认主机,因为它是唯一的主机)。Catalina引擎处理通过HTTP连接器接收的所有传入请求,并发回相应的响应。它根据请求标头中包含的信息将每个请求转发到正确的主机和上下文。

Service–服务

**服务是一个中间组件,它位于服务器内部,并将一个或多个连接器与一个引擎绑定。**Tomcat的默认配置包括Catalina服务,它将HTTP和AJP连接器与Catalina引擎相关联。因此,Connector和Engine是Service元素的子元素。

Service元素很少由用户自定义,因为默认实现简单而实用。

Server–服务器

**Server是顶级组件,代表Tomcat的一个实例。**它可以包含一个或多个服务,每个服务都有自己的引擎和连接器。

现在让我们讨论上面使用的其他几个概念server.xml

Listener–监听器

监听器是一个Java对象,通过实现org.apache.catalina.LifecycleListener接口,可以响应特定事件。

  • AprLifecycleListener:启用Apache Portable Runtime(APR)库。该库为tomcat提供操作系统级支持。
  • JasperListener:启用Jasper,它是JSP引擎。此侦听器可以重新编译已更新的JSP文档。
  • JreMemoryLeakPreventionListener:处理可能导致内存泄漏的不同已知情况。
  • GlobalResourcesLifecycleListener:负责实例化与全局Java命名和目录接口(JNDI)关联的托管bean。
  • ThreadLocalLeakPreventionListener:还处理可能导致内存泄漏的不同已知情况。
GlobalNamingResources–命名资源

GlobalNamingResources元素只能在Server组件中定义。**它定义了可在整个服务器上访问的JNDI资源。**默认情况下定义的唯一资源server.xml是通过该文件定义的基于用户和密码内存的数据库conf/tomcat-users.xml

Realm

Realm组件可以出现在任何容器组件(Engine,Host和Context)中。它表示用户,密码和用户角色的数据库。其目的是支持基于容器的身份验证。

此外UserDatabaseRealm,还提供以下领域类:( JDBCRealm通过其JDBC驱动程序连接到关系数据库),DataSourceRealm(连接到通过JNDI命名的JDBC数据源),JNDIRealm(连接到轻量级目录访问协议目录)和MemoryRealm(在内存中加载XML文件)。

Valve–阀门

Valve是类似拦截器的元素,当插入到Container(Context,Host或Engine)中时,会在到达应用程序之前拦截所有传入的HTTP请求。这使您能够预处理指向特定应用程序的请求; 到虚拟主机中运行的应用程序或引擎中运行的所有应用程序。

可以多次使用阀门,例如

RemoteAddrValve阀可以让你选择性地允许或他们的源IP地址的基础上块的请求。它支持两个属性 - 允许和阻止。

RemoteHostValve阀的运作就像远程地址过滤,但对客户端的主机名,而不是客户端的IP地址。

RequestDumperValve传入请求日志的详细信息,因此是用于调试。

single sign on valve,包括在主机容器中时,有需要一种身份验证该主机的所有应用程序的影响。如果没有这个阀门,用户必须在使用每个单独的应用程序之前输入他的ID和密码。

现在都说互联网寒冬,其实只要自身技术能力够强,咱们就不怕!我这边专门针对Android开发工程师整理了一套【Android进阶学习视频】、【全套Android面试秘籍】、【Android知识点PDF】。如有需要获取资料文档的朋友,可以点击我的GitHub免费获取!

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

学习交流

群内有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。

35岁中年危机大多是因为被短期的利益牵着走,过早压榨掉了价值,如果能一开始就树立一个正确的长远的职业规划。35岁后的你只会比周围的人更值钱。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!**

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值