Tomcat 体系架构,2021 吊打面试官系列
每一个组件在文件中定义,该文件server.xml
位于 Tomcat 的安装文件夹的/conf
子目录中。我们来详细讨论这些组件。
server.xml 组件
默认情况下,server.xml
文件附带此配置,我们将详细研究它的元素。
让我们从内到外讨论 tomcat 配置文件的功能组件,以便更好地关联事物。
Context--上下文
Context 是一组称为容器的 Tomcat 组件的最内层元素,它代表一个 Web 应用程序。Tomcat 在加载应
用程序时自动实例化并配置标准上下文。作为配置的一部分,Tomcat 还处理\WEB-INF\web.xml
应用程序文件夹文件中定义的属性,并使其可供应用程序使用。
Connector--连接器
**连接器处理与客户端的通信。**Tomcat 有多个连接器,例如用于大多数 HTTP 流量的 HTTP 连接器和 AJP 连接器(将 Tomcat 连接到另一个 Web 服务器(如 Apache HTTPD 服务器)时使用的 AJP 协议)。
Tomcat 的默认配置包括用于处理 HTTP 通信的连接器。默认情况下,此连接器等待通过端口 8080 发出的请求。这就是为什么我们的示例的 URL 始终以http://localhost:8080/
。请注意,对所有应用程序的请求都通过此连接器的单个实例。每个新请求都会导致在请求持续时间内在连接器内保持活动状态的新线程的实例化。有关 Tomcat 的互联网上的文章通常将此连接器称为“ Coyote”。
Connector 的 connectionTimeout 属性设置为 20000 表示会话为 5 小时,33 分钟,和不活动的 20 秒后终止,而**redirectPort =” 8443“**意味着,需要安全套接字层(SSL)输送到来的请求被重定向到端口 8443。
AJP 连接器允许 Tomcat 仅处理动态网页,并允许纯 HTML 服务器(例如,Apache Web 服务器)处理静态页面的请求。这最大化了处理请求的效率。您可以注释掉这个连接器,因为今天 tomcat 本身非常快,或者只是如果您不打算与 Tomcat 一起使用 Web 服务器。
Host-主机
**主机是网络名称(例如 www.yourdomain.com)与 Tomcat 服务器的关联。**主机可以包含任意数量的上下文(即应用程序)。您可以在同一服务器上定义多个主机。例如,如果您已注册域yourdomain.com
,则可以定义主机名,例如w1.yourdomain.com
和w2.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
。
评论