Tomcat启动分析以及如何启动.docx
- 文档编号:6057842
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:12
- 大小:23.26KB
Tomcat启动分析以及如何启动.docx
《Tomcat启动分析以及如何启动.docx》由会员分享,可在线阅读,更多相关《Tomcat启动分析以及如何启动.docx(12页珍藏版)》请在冰点文库上搜索。
Tomcat启动分析以及如何启动
1-TomcatServer的组成部分
1.1-Server
AServerelementrepresentstheentireCatalinaservletcontainer.(Singleton)
1.2-Service
AServiceelementrepresentsthecombinationofoneormoreConnectorcomponentsthatshareasingleEngine
Service是这样一个集合:
它由一个或者多个Connector组成,以及一个Engine,负责处理所有Connector所获得的客户请求
1.3-Connector
一个Connector将在某个指定端口上侦听客户请求,并将获得的请求交给Engine来处理,从Engine处获得回应并返回客户
TOMCAT有两个典型的Connector,一个直接侦听来自browser的http请求,一个侦听来自其它WebServer的请求
CoyoteHttp/1.1Connector在端口8080处侦听来自客户browser的http请求
CoyoteJK2Connector在端口8009处侦听来自其它WebServer(Apache)的servlet/jsp代理请求
1.4-Engine
TheEngineelementrepresentstheentirerequestprocessingmachineryassociatedwithaparticularService
ItreceivesandprocessesallrequestsfromoneormoreConnectors
andreturnsthecompletedresponsetotheConnectorforultimatetransmissionbacktotheclient
Engine下可以配置多个虚拟主机VirtualHost,每个虚拟主机都有一个域名
当Engine获得一个请求时,它把该请求匹配到某个Host上,然后把该请求交给该Host来处理
Engine有一个默认虚拟主机,当请求无法匹配到任何一个Host上的时候,将交给该默认Host来处理
1.5-Host
代表一个VirtualHost,虚拟主机,每个虚拟主机和某个网络域名DomainName相匹配
每个虚拟主机下都可以部署(deploy)一个或者多个WebApp,每个WebApp对应于一个Context,有一个Contextpath
当Host获得一个请求时,将把该请求匹配到某个Context上,然后把该请求交给该Context来处理
匹配的方法是“最长匹配”,所以一个path==""的Context将成为该Host的默认Context
所有无法和其它Context的路径名匹配的请求都将最终和该默认Context匹配
1.6-Context
一个Context对应于一个WebApplication,一个WebApplication由一个或者多个Servlet组成
Context在创建的时候将根据配置文件$CATALINA_HOME/conf/web.xml和$WEBAPP_HOME/WEB-INF/web.xml载入Servlet类
当Context获得请求时,将在自己的映射表(mappingtable)中寻找相匹配的Servlet类
如果找到,则执行该类,获得请求的回应,并返回
2-TomcatServer的结构图
3-配置文件$CATALINA_HOME/conf/server.xml的说明
该文件描述了如何启动TomcatServer
----------------------------------------------------------------------------------------------->
--启动Server
在端口8005处等待关闭命令
如果接受到"SHUTDOWN"字符串则关闭服务器
-->
--Listener?
?
?
目前没有看到这里
-->
--GlobalJNDIresources?
?
?
目前没有看到这里,先略去
-->
............
--Tomcat的StandaloneService
Service是一组Connector的集合
它们共用一个Engine来处理所有Connector收到的请求
-->
--CoyoteHTTP/1.1Connector
className:
该Connector的实现类是org.apache.coyote.tomcat4.CoyoteConnector
port:
在端口号8080处侦听来自客户browser的HTTP1.1请求
minProcessors:
该Connector先创建5个线程等待客户请求,每个请求由一个线程负责
maxProcessors:
当现有的线程不够服务客户请求时,若线程总数不足75个,则创建新线程来处理请求
acceptCount:
当现有线程已经达到最大数75时,为客户请求排队
当队列中请求数超过100时,后来的请求返回Connectionrefused错误
redirectport:
当客户请求是https时,把该请求转发到端口8443去
其它属性略
-->
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: / --> org.apache.catalina.servlets.DefaultServlet --InvokerServlet 处理一个WEBAPP中的匿名servlet 当一个servlet被编写并编译放入/WEB-INF/classes/中,却没有在/WEB-INF/web.xml中定义的时候 该servlet被调用,把匿名servlet映射成/servlet/ClassName的形式 URLPATTERNMAPPING: /servlet/* --> org.apache.catalina.servlets.InvokerServlet --JspServlet 当请求的是一个JSP页面的时候(*.jsp)该servlet被调用 它是一个JSP编译器,将请求的JSP页面编译成为servlet再执行 URLPATTERNMAPPING: *.jsp --> --+---------------------------+--> --|servlet映射定义部分|--> --+---------------------------+--> --+------------------------+--> --|其它部分,略去先|--> --+------------------------+--> ............ -----------------------------------------------------------------------------------------------> 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]的信息,这样就完成设置过程。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Tomcat 启动 分析 以及 如何