tomcat系列-01-名词解释

来源:互联网 发布:摄影样片 知乎 编辑:程序博客网 时间:2024/05/17 06:36

声明

该文章由大牛马哥的相关linux视频资料整理而来。若认为内容侵权请及时通知本人。

  • 简介
  • 结构
    • 1 体系结构图
    • 2 Server
    • 3 Service
    • 4 Engine
    • 5 Host
    • 6 Connector
    • 7 Context
    • 8 Valve
  • 连接器
    • 1 连接器协议
    • 2 tomcat工作模式
    • 3 几种Connector
  • 目录结构

1 简介

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。
由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。
因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

2 结构

2.1 体系结构图

tomcat-体系结构图

参考官网 : http://tomcat.apache.org/tomcat-7.0-doc/architecture/

2.2 Server

Server配置详情

In the Tomcat world, a Server represents the whole container. Tomcat provides a default implementation of the Server interface which is rarely customized by users.

tomcat的一个实例,通常一个JVM只能包含一个Tomcat实例.
一台物理服务器上可以在启动多个JVM的情况下在每一个JVM中启动一个Tomcat实例,每个实例分属于一个独立的管理端口。这是一个顶级组件。

2.3 Service

Service配置详情

A Service is an intermediate component which lives inside a Server and ties one or more Connectors to exactly one Engine.

一个服务组件通常包含一个引擎和与此引擎相关联的一个或多个连接器。给服务命名可以方便管理员在日志文件中识别不同服务产生的日志。一个server可以包含多个service组件,但通常情下只为一个service指派一个server。

2.4 Engine

Engine配置详情

An Engine represents request processing pipeline for a specific Service. As a Service may have multiple Connectors, the Engine receives and processes all requests from these connectors, handing the response back to the appropriate connector for transmission to the client. The Engine interface may be implemented to supply custom Engines, though this is uncommon.

Note that the Engine may be used for Tomcat server clustering via the jvmRoute parameter. Read the Clustering documentation for more information.

2.5 Host

Host配置详情

A Host is an association of a network name, e.g. www.yourcompany.com, to the Tomcat server. An Engine may contain multiple hosts, and the Host element also supports network aliases such as yourcompany.com and abc.yourcompany.com. Users rarely create custom Hosts because the StandardHost implementation provides significant additional functionality.

Host组件类似于Apache/httpd中的虚拟主机

2.6 Connector

Http Connector配置详情
Ajp Connector配置详情

A Connector handles communications with the client. There are multiple connectors available with Tomcat. These include the HTTP connector which is used for most HTTP traffic, especially when running Tomcat as a standalone server, and the AJP connector which implements the AJP protocol used when connecting Tomcat to a web server such as Apache HTTPD server. Creating a customized connector is a significant effort.

负责连接客户端(可以是浏览器或Web服务器)请求至Servlet容器内的Web应用程序。一个引擎可以配置多个连接器,但这些连接器必须使用不同的端口。默认的连接器是基于HTTP/1.1的Coyote。同时,Tomcat也支持AJP、JServ和JK2连接器。

2.7 Context

Context组件是最内层次的组件,它表示Web应用程序本身。配置一个Context最主要的是指定Web应用程序的根目录,以便Servlet容器能够将用户请求发往正确的位置。Context组件也可包含自定义的错误页,以实现在用户访问发生错误时提供友好的提示信息。

2.8 Valve

用来拦截请求并在将其转至目标之前进行某种处理操作,类似于Servlet规范中定义的过滤器。Valve可以定义在任何容器类的组件中。Valve常被用来记录客户端请求、客户端IP地址和服务器等信息,这种处理技术通常被称作请求转储(request dumping)。请求转储valve记录请求客户端请求数据包中的HTTP首部信息和cookie信息文件中,响应转储valve则记录响应数据包首部信息和cookie信息至文件中。

3 连接器

连接器负责连接客户端请求至Servlet容器内的Web应用程序。此处的客户端可以是web浏览器,也可以是一个服务器,如Apache/Httpd,Nginx等。

较为普遍的就是将浏览器的请求直接连接至应用程序处理。另一中就是将Nginx等服务器的请求连接至应用程序,比如用Nginx按资源类型转发到不同后端服务器。

3.1 连接器协议

Tomcat的Web服务器连接器支持两种协议:AJP和HTTP

  • AJP(Apache JServ Protocol)

目前正在使用的AJP协议的版本是通过JK和JK2连接器提供支持的AJP13,它基于 二进制 的格式在Web服务器和Tomcat之间传输数据,而此前的版本AJP10和AJP11则使用文本格式传输数据。

  • HTTP

使用HTTP或HTTPS协议在Web服务器和Tomcat之间建立通信,此时,Tomcat就是一个完全功能的HTTP服务器,它需要监听在某端口上以接收来自于商前服务器的请求。

3.2 tomcat工作模式

  • 作为应用程序服务器:请求来自于前端的web服务器,这可能是Apache/httpd,Nginx等
  • 作为独立服务器:请求来自于web浏览器

3.3 几种Connector

  • HTTP连接器
    • 基于java的HTTP/1.1连接器,这也是Tomcat6默认使用的连接器,即Coyote
    • Java开发的高性能NIO HTTP/1.1连接器,实现不太成熟,有严重bug存在
    • C/C++开发的native APR: 在负载较大的场景中,此连接器可以提供非常好的性能;APR即Apache Portable Runtime,它是一个能让开发者采用与平台无关的风格的方式来开发C/C++代码本地库,它能够很好的跨Windows,
  • SSL连接器
  • AJP 1.3连接器
  • proxy连接器

4 目录结构

[root@c2 tomcat-7]# tree  -L 2.├── bin│   ├── bootstrap.jar│   ├── catalina.sh│   ├── catalina-tasks.xml│   ├── commons-daemon.jar│   ├── commons-daemon-native.tar.gz│   ├── configtest.sh│   ├── daemon.sh│   ├── digest.sh│   ├── setclasspath.sh│   ├── shutdown.sh│   ├── startup.sh│   ├── tomcat-juli.jar│   ├── tomcat-native.tar.gz│   ├── tool-wrapper.sh│   └── version.sh├── conf│   ├── Catalina│   ├── catalina.policy│   ├── catalina.properties│   ├── context.xml│   ├── logging.properties│   ├── server.xml│   ├── tomcat-users.xml│   └── web.xml├── lib│   ├── annotations-api.jar│   ├── catalina-ant.jar│   ├── catalina-ha.jar│   ├── catalina.jar│   ├── catalina-tribes.jar│   ├── ecj-4.4.2.jar│   ├── el-api.jar│   ├── jasper-el.jar│   ├── jasper.jar│   ├── jsp-api.jar│   ├── servlet-api.jar│   ├── tomcat7-websocket.jar│   ├── tomcat-api.jar│   ├── tomcat-coyote.jar│   ├── tomcat-dbcp.jar│   ├── tomcat-i18n-es.jar│   ├── tomcat-i18n-fr.jar│   ├── tomcat-i18n-ja.jar│   ├── tomcat-jdbc.jar│   ├── tomcat-util.jar│   └── websocket-api.jar├── LICENSE├── logs├── NOTICE├── RELEASE-NOTES├── RUNNING.txt├── temp│   └── safeToDelete.tmp├── webapps│   ├── docs│   ├── examples│   ├── host-manager│   ├── manager│   └── ROOT└── work    └── Catalina
0 0
原创粉丝点击