tomcat 详解

本文深入解析了Tomcat服务器,包括其目录结构、配置文件、组件功能及部署操作。Tomcat作为流行的Web应用服务器,由Apache基金会开发,支持最新Servlet和JSP规范。文章详细介绍了bin、conf、lib等目录作用,server.xml、web.xml等配置文件内容,以及如何通过deploy、undeploy等操作部署和管理Web应用。

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

1 tomcat的目录结构

bin:脚本,及启动时用到的类;

conf:配置文件目录;主配置文件server.xml

lib:Java类库;

logs:日志文件目录;

temp:临时文件目录;

webapps:webapp的默认目录;

work:工作目录;存放编译后的字节码文件;

2  tomcat的配置文件构成:

server.xml:主配置文件;

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

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

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

catalina.policy:当使用-security选项启动tomcat时,用于为tomcat设置安全策略;

catalina.properties:Java属性的定义文件,用于设定类加载器路径,以及一些与JVM调优相关参数;

logging.properties:日志系统相关的配置

3 JAVA WebAPP的组织结构:

有特定的组织形式,层次型的目录结构:主要包含了servlet代码文件,JSP页面文件、类文件、部署描述符文件等。                     /: webapps的根目录

index.jsp:webappde主页;

WEB-INF/:当前webapp的私有资源路径;通常用于存储当前webapp自用的web.xml;

META-INF/:当前webapp的私有资源路径;通常用于存储当前webapp自用的context.xml配置文件;

classes/:类文件,webapp的私有类;

lib/:类文件,当前webapp的私有类,被打包为jar格式;

webapp归档格式:

.war:webapp 归档文件

.jar:EJB的类打包文件(类库);

.rar:资源适配器类打包文件;

.ear:企业级应用程序;

4 部署webapp相关的操作

deploy:部署,将webapp的源文件放置于目标目录(网页程序文件存放目录),配置tomcat服务器能够基于web.xml和context.xml文件中定义的路径来访问此webapp;将其特有的类和依赖的类通过 class loader装载至tomcat;

部署有两种方式:

自动部署:auto deploy

手动部署:

冷部署:把webapp复制到指定的位置,而后才启动tomcat;

热部署:在不停止tomcat的前提下进行部署;部署工具:manager、ant脚本、tcd(tomcat client deployer)等;

undeploy:反部署,停止webapp,并从tomcat实例上拆除其部分文件和部署名;

start:启动处于停止状态的webapp;

stop:停止webapp,不再向用户提供服务;其类依然在jvm上;

redeploy:重新部署;

5 主配置文件server.xml ,tomcat中的组件

   【 Server 】:即一个tomcat实例;

   【 Service组件 】:用于实现将一个或多个connector组件关联至一个engine组件;

   【 Context组件 】:

负责接收请求,常见的有三类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

属性:

port=”8080″

protocol=”HTTP/1.1″

connectionTimeout=”20000″

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

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

enableLookups:是否启用DNS查询功能;

acceptCount:等待队列的最大长度;

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

常用属性:

name:engine组件的名称,用于日志和错误信息记录时区别不同的引擎

defaultHost=”localhost”

jvmRoute=

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

示例:

<Host name=”localhost” appBase=”webapps”

unpackWARs=”true” autoDeploy=”true”>

</Host>

常用属性说明:

(1) appBase:此Host的webapps的默认存放目录,指存放非归档的web应用程序的目录或归档的WAR文件目录路径;

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

示例:

<Host name=”tc1.magedu.com” appBase=”/appdata/webapps” unpackWARs=”true” autoDeploy=”true”>

</Host>

 

主配置文件server.xml内字段详解:

server:1、port 指定一个端口,这个端口负责监听关闭tomcat的请求
2、shutdown 指定向端口发送的命令字符串


service:name 指定service的名字


Connector(表示客户端和service之间的连接):
1、port 指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求
2、minProcessors 服务器启动时创建的处理请求的线程数
3、maxProcessors 最大可以创建的处理请求的线程数
4、enableLookups 如果为true,则可以通过调用request.getRemoteHost()进行DNS查
询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址
5、redirectPort 指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
6、acceptCount 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理
队列中的请求数,超过这个数的请求将不予处理
7、connectionTimeout 指定超时的时间数(以毫秒为单位)


Engine(表示指定service中的请求处理机,接收和处理来自Connector的请求):
1、defaultHost 指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的


Context(表示一个web应用程序):
1、docBase 应用程序的路径或者是WAR文件存放的路径
2、path 表示此web应用程序的url的前缀,这样请求的url为http://localhost:8080/path/****
3、reloadable 这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序


host(表示一个虚拟主机):
1、name 指定主机名
2、appBase 应用程序基本目录,即存放应用程序的目录
3、unpackWARs 如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接
从WAR文件中运行应用程序


Logger(表示日志,调试和错误信息):
1、className 指定logger使用的类名,此类必须实现org.apache.catalina.Logger 接口
2、prefix 指定log文件的前缀
3、suffix 指定log文件的后缀
4、timestamp 如果为true,则log文件名中要加入时间,如下例:localhost_log.2001-10-04.txt


Realm(表示存放用户名,密码及role的数据库):
1、className 指定Realm使用的类名,此类必须实现org.apache.catalina.Realm接口


Valve(功能与Logger差不多,其prefix和suffix属性解释和Logger 中的一样):
1、className 指定Valve使用的类名,如用org.apache.catalina.valves.AccessLogValve类可以记录应用程序的访问信息


directory(指定log文件存放的位置):
1、pattern 有两个值,common方式记录远程主机名或ip地址,用户名,日期,第一行请求的字符串,HTTP响应代码,发送的字节数。combined方式比common方式记录的值更多

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值