port="8080"
minProcessors="5"maxProcessors="75"acceptCount="100"
enableLookups="true"
redirectPort="8443"
debug="0"
connectionTimeout="20000"
useURIValidationHack="false"
disableUploadTimeout="true"/>
--Engine用来处理Connector收到的Http请求
它将匹配请求和自己的虚拟主机,并把请求转交给对应的Host来处理
默认虚拟主机是localhost
-->
--日志类,目前没有看到,略去先-->
--Realm,目前没有看到,略去先-->
--虚拟主机localhost
appBase:
该虚拟主机的根目录是webapps/
它将匹配请求和自己的Context的路径,并把请求转交给对应的Context来处理
-->
--日志类,目前没有看到,略去先-->
--Context,对应于一个WebApp
path:
该Context的路径名是"",故该Context是该Host的默认Context
docBase:
该Context的根目录是webapps/mycontext/
-->
--另外一个Context,路径名是/wsota-->
----------------------------------------------------------------------------------------------->
4-Context的部署配置文件web.xml的说明
一个Context对应于一个WebApp,每个WebApp是由一个或者多个servlet组成的
当一个WebApp被初始化的时候,它将用自己的ClassLoader对象载入“部署配置文件web.xml”中定义的每个servlet类
它首先载入在$CATALINA_HOME/conf/web.xml中部署的servlet类
然后载入在自己的WebApp根目录下的WEB-INF/web.xml中部署的servlet类
web.xml文件有两部分:
servlet类定义和servlet映射定义
每个被载入的servlet类都有一个名字,且被填入该Context的映射表(mappingtable)中,和某种URLPATTERN对应
当该Context获得请求时,将查询mappingtable,找到被请求的servlet,并执行以获得请求回应
分析一下所有的Context共享的web.xml文件,在其中定义的servlet被所有的WebApp载入
----------------------------------------------------------------------------------------------->
--概述:
该文件是所有的WEBAPP共用的部署配置文件,
每当一个WEBAPP被DEPLOY,该文件都将先被处理,然后才是WEBAPP自己的/WEB-INF/web.xml
-->
--+-------------------------+-->
--|servlet类定义部分|-->
--+-------------------------+-->
--DefaultServlet
当用户的HTTP请求无法匹配任何一个servlet的时候,该servlet被执行
URLPATTERNMAPPING:
/
-->
default
org.apache.catalina.servlets.DefaultServlet
debug
0
listings
true
1
--InvokerServlet
处理一个WEBAPP中的匿名servlet
当一个servlet被编写并编译放入/WEB-INF/classes/中,却没有在/WEB-INF/web.xml中定义的时候
该servlet被调用,把匿名servlet映射成/servlet/ClassName的形式
URLPATTERNMAPPING:
/servlet/*
-->
invoker
org.apache.catalina.servlets.InvokerServlet
debug
0
2
--JspServlet
当请求的是一个JSP页面的时候(*.jsp)该servlet被调用
它是一个JSP编译器,将请求的JSP页面编译成为servlet再执行
URLPATTERNMAPPING:
*.jsp
-->
jsp
org.apache.jasper.servlet.JspServlet
logVerbosityLevel
WARNING
3
--+---------------------------+-->
--|servlet映射定义部分|-->
--+---------------------------+-->
default
/
invoker
/servlet/*
jsp
*.jsp
--+------------------------+-->
--|其它部分,略去先|-->
--+------------------------+-->
............
----------------------------------------------------------------------------------------------->
5-TomcatServer处理一个http请求的过程
假设来自客户的请求为:
http:
//localhost:
8080/wsota/wsota_index.jsp
1)请求被发送到本机端口8080,被在那里侦听的CoyoteHTTP/1.1Connector获得
2)Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应
3)Engine获得请求localhost/wsota/wsota_index.jsp,匹配它所拥有的所有虚拟主机Host
4)Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机)
5)localhostHost获得请求/wsota/wsota_index.jsp,匹配它所拥有的所有Context
6)Host匹配到路径为/wsota的Context(如果匹配不到就把该请求交给路径名为""的Context去处理)
7)path="/wsota"的Context获得请求/wsota_index.jsp,在它的mappingtable中寻找对应的servlet
8)Context匹配到URLPATTERN为*.jsp的servlet,对应于JspServlet类
9)构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法
10)Context把执行完了之后的HttpServletResponse对象返回给Host
11)Host把HttpServletResponse对象返回给Engine
12)Engine把HttpServletResponse对象返回给Connector
13)Connector把HttpServletResponse对象返回
有很多办法可以让Tomcat在系统启动的时候自动运行,我这里介绍两种方法,一种简单,另外一种复杂而专业。
在介绍这两个方法前你应该先装JDK,Tomcat。
Tomcat的安装很简单,下载二进制压缩包xxx.tar.gz,用tarzxvfxxx.tar.gz-C[target],[target]是安装Tomcat的目录。
设置环境变量JDK_HOME和JAVA_HOME都指向JDK的安装目录即可。
一.简单的方法
Tomcat安装目录下的bin目录有两个脚本分别用来启动和停止Tomcat,分别是startup.sh,shutdown.sh,你可以用这两个脚本来手工启动和停止Tomcat服务并进行安装后的测试。
我们最简单的方法就是通过startup.sh来自动启动Tomcat,编辑/etc/rc.d/rc.local增加内容(假设JDK目录是/usr/jdk,Tomcat目录是/apache/tomcat)
exportJDK_HOME=/usr/jdk
exportJAVA_HOME=/usr/jdk
/apache/tomcat/bin/startup.sh
这样在系统重启后就可以自动启动Tomcat
二.复杂而专业的方法
前面介绍的应该是最简单的让Tomcat自动启动的方法了,但是它有两个不足
1.无法指定启动Tomcat服务的用户,会导致Tomcat已超级用户运行,存在重大的安全隐患
2.系统关闭的时候无法自动停止Tomcat服务
在Linux下,Tomcat可以作为一个守护进程来启动以及停止,这个必须借助于项目commons-daemon中的jsvc工具。
Tomcat安装完后就带有这个工具的源码{tomcat}/bin/jsvc.tar.gz。
按照下列命令安装这个工具:
解压:
tarzxvfjsvc.tar.gz
配置:
cdjsvc-src
chmod+xconfigure
./configure--with-java=/usr/jdk
编译:
make
检验:
./jsvc-help
jsvc工具本身带了一个脚本用来启动和停止Tomcat守护进程,但是在试验中发现该脚本无法设置为自动启动,显示的错误信息是:
tomcat服务不支持chkconfig,因此修改了此脚本,可以从此处下载:
tomcat.txt
修改下载的脚本里面有关路径的信息以及要启动Tomcat的用户(用户必须已存在),拷贝脚本到/etc/rc.d/init.d目录下的tomcat文件,给该脚本赋予可执行权限(chmod+xtomcat),你可以使用命令/etc/rc.d/init.d/tomcatstart|stop来验证守护进程是否可以正常启动和停止。
接下来就是把这个脚本设置成系统启动时自动执行,系统关闭时自动停止,使用如下命令:
chkconfig--addtomcat
重新启动系统后可以启动的过程中看到StartingTomcat.....[OK]的信息,这样就完成设置过程。