tomcat核心概念及应用

来源:互联网 发布:433m无线模块数据手册 编辑:程序博客网 时间:2024/06/07 03:14

Tomcat 核心组件及配置文件解读


Java 2 EE 计数体系包含如 Serverlet , JSP , JMX 等等。

以OpenJDK为例,当前比较常用的有1.6.0、1.7.0、1.8.0等版本,当一台主机上有多个OpenJDK时,可使用 "alternatives" 命令设定默认使用的版本。

Java代码的运行:*.java(source code) --> javac --> *.class(bytecode)

JSP :Java Server Page>JSP Container : JSP + Servlet Container

基于jasper将静态输出的数据转为java代码进行输出,结果为servlet规范的代码

.jsp -->jasper--> .java --> javac --> .class --> jvm

tomcat 是JSP Container的开源实现,tomcat是 Java 2 EE 技术体系的不完整实现,tomcat在使用前需要部署Java环境。

JSP Container 技术的商业实现包括:WebSphere, WebLogic, Oc4j, Glassfish, Geronimo, JOnAS, JBoss等等

JSP Container 技术的开源实现包括:Tomcat, Jetty, Resin


Tomcat默认配置文件及结构框架:


html语言嵌入式风格


tomcat的配置文件:


server.xml:主配置文件

web.xml:每个webapp只有“部署”后才能被访问,它的部署方式通常由web.xml进行定义,其存放位置为WEB-INF/目录中;此文件为所有的webapps提供默认配置

context.xml:每个web都可以专用的配置文件,它通常由专用的配置文件context.xml来定义,其存放位置为WEB-INF/目录中;此文件为所有的webapps提供默认配置

tomcat-users.xml:用户认证的账号和密码文件


tomcat的主配置文件及各组件的框架结构详解


tomcat主配置文件的默认配置实例:


<?xml version='1.0' encoding='utf-8'?>

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

<Service name="Catalina">

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

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

<Engine name="Catalina" defaultHost="localhost">

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

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />

</Host>

</Engine>

</Service>

</Server>



组件详解:每个组件都由一个Java“类”实现,这些组件大体可分为以下几个类型:


顶级组件:Server

一个Server可包含多个Service代表tomcat instance,即表现出的一个java进程;监听在8005端口,只接收“SHUTDOWN”。

各server监听的端口不能相同,因此,在同一物理主机启动多个实例时,需要修改其监听端口为不同的端口


服务类组件:Service


一个Service中仅能有一个Engine

一个Engine可对应多个Connector,但一个Connector仅能对应一个Engine用于实现将一个或多个connector组件关联至一个engine组件


连接器组件:http, https, ajp


负责接收请求,常见的有三类http/https/ajp;

进入tomcat的请求可分为两类:

1.standalone : 请求来自于客户端浏览器;

2.由其它的web server反代:来自前端的反代服务器;

nginx --> http connector --> tomcat

httpd(proxy_http_module) --> http connector --> tomcat

httpd(proxy_ajp_module) --> ajp connector --> tomcat

Connector属性

port="8080"

protocol="HTTP/1.1"

connectionTimeout="20000"

address:监听的IP地址;默认为本机所有可用地址

maxThreads:最大并发连接数,默认为200

enableLookups:是否启用DNS查询功能

acceptCount:等待队列的最大长度


容器类:Engine, Host, Context

一个Engine中可包含多个Host,一个Host中可包含多个Context

Engine组件:Servlet实例,即servlet引擎,其内部可以一个或多个host组件来定义站点,通常需要通过defaultHost来定义默认的虚拟主机

Engine属性

name=" "

defaultHost="localhost"

jvmRoute=" "


Host组件:位于engine内部用于接收请求并进行相应处理的主机或虚拟主机


Host属性

1.appBase:此Host的webapps的默认存放目录(/var/lib/tomcat/webapps),指存放非归档的web应用程序的目录或归档的WAR文件目录路径;可以使用基于$CATALINA_BASE变量所定义的路径的相对路径

2.autoDeploy:在Tomcat处于运行状态时,将某webapp放置于appBase所定义的目录中时,是否自动将其部署至tomcat。

1 0