tomcat
一. 简介
Apache的一个子项目,是一款Servlet/JSP容器。
Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求与服务器响应的中间层。Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。
二.Servlet容器调用Servlet处理请求/响应过程
- 当客户请求访问某个Servlet时,Servlet容器将创建一个ServletRequest对象和ServletResponse对象;
- 在ServletRequest对象中封装了客户请求信息,然后Servlet容器把ServletRequest对象传给客户所请求的Servlet;
- Servlet把响应结果写在ServletResponse中,由Servlet容器把响应结果传给客户。
三. tomcat结构
tomcat服务器是由一系列可配置的组件构成,其中核心组件是Servlet容器,它是所有其他Tomcat组件的顶层容器。可以在server.xml文件中进行配置,每个Tomcat组件在server.xml文件中对应一种配置元素。
<Server> //Servlet容器 <Service> <Connector/> //连接器。和客户实际交互的组件,它负责接受客户的请求,以及想客户返回响应结果。 ...... <Connector/> <Engine> <Host> //虚拟主机 <Context></Context> //运行在虚拟主机上的单个web应用。 ...... <Context></Context> </Host> ...... <Host> ...... </Host> </Engine> </Service> ...... <Service> ...... </Service> </Server>
顶层配置元素 <Server> 和<Service>;
连接器类元素 <Connector> 介于客户服务之间的通信接口,负责将客户的请求发送给服务器,并将服务器的响应结果传递给客户;
容器类元素 <Engine>,<Host>,<Context>处理客户请求并生成响应结果的组件
嵌套类元素 <Loger>,<Value>,<Realm> 可以加入到容器中的组件
<Server> 元素代表整个Servlet容器,它是Tomcat实例的顶层元素。<Server>元素中可以包含一个或多个<Service>元素。
<Service> 包含一个<Engine>元素,以及一个或多个<Connector>元素,这些<Connector>元素共享同一个<Engine>元素
<Connector>代表和客户实际交互的组件,它负责接受客户的请求,以及想客户返回响应结果。
<Engine> 每个<Service>元素只能包含一个<Engine>元素。<Engine>元素处理在同一个<Service>中所有<Connector>元素接收到的客户请求。
<Host> 一个<Engine>可以包含多个<Host>元素。每个<Host>元素定义了一个虚拟主机,它可以包含一个或多个Web应用。每个Web应用必须有唯一的URL路径,这个URL路径在<Context>元素的path属性中设定。如:<Context path=“/child” docBase=“web-test” debug=“0” Reloadable=“true”>。reloadable为true,则tomcat运行中会动态监视class等文件的改动,如果监视到有class文件被更新,tomcat会自动重新加载Web应用。开发阶段设为true,发布阶段设为false.访问时:www.xxx.com/child-->webapps/test.
如:
<Host name="localhost" appBase="/opt/webapps" unpackWARs="true" autoDeploy="true">
<Context path="/adu" docBase="adu-web" debug="0" reloadable="false"></Context>
</Host>
则:www.xxx.com/adu-->/opt/webapps/adu-web
四. JAVA web应用
Java Web应用由一组静态HTML页面,Servlet,JSP和其他的class组成。每种组件在Web应用中都有固定的存放目录。
Java Web应用通过一个基于XML的发布描述符文件来配置其发布信息,这个文件名为web.xml。
五. 部署
部署一个新的tomcat需要修改的地方:
1)bin/catalina.sh(调试设置)
CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -DDEBUG_ENV -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=35577" # OS specific support........
2)conf/server.xml
<Server port="45742" shutdown="SHUTDOWN"> ...... <Connector port="45741" protocol="HTTP/1.1" maxThreads="2000" acceptCount="2000" connectionTimeout="20000" redirectPort="45743" /> ...... <Connector port="45744" protocol="AJP/1.3" redirectPort="45743" /> ..... <Host name="localhost" appBase="/opt/webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="adu-web" debug="0" reloadable="false"></Context> </Host> ......
- 作者:水岩
- 出处:http://www.cnblogs.com/waterystone
- 本博客中未标明转载的文章归作者水岩和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如果您觉得本文对您的学习有所帮助,可通过支付宝(左) 或者 微信(右) 来打赏博主,增加博主的写作动力