Tomcat 初探(二) server.xml 配置
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Tomcat 初探(二) server.xml 配置,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5311字,纯文字阅读大概需要8分钟。
内容图文
前言
在上一篇文章中,我们在示例中演示了网站的发布,其中涉及到了 server.xml 的修改,本文中我会给大家详细解释一下 server.xml 文件中的节点及其属性的作用,本片文章参考并摘抄了他人的一些文章,列举出来,表示感谢:
tomcat server.xml 中文版:http://www.blogjava.net/baoyaer/articles/107278.html
tomcat server.xml 文件内各节点详解:http://www.cnblogs.com/gentoo/archive/2012/10/13/2722463.html
tomcat 启动过程原理详解:http://www.ha97.com/4820.html
结构
- Server 节点代表着整个 catalina servlet container 且只能有一个;
- Service 节点由一个 Engine、一个或多个 Connector 组成;
- Connector 节点主要监听客户请求,Tomcat 有两个典型的 Connector,一个直接侦听来自 browser 的 http 请求,一个侦听来自其他 WebServer 的请求;
- Engine 节点主要负责处理所有 Connector 所获得的客户请求,交由 HOST 处理后,回应 Connector 并返回客户;
- HOST 节点代表一个虚拟主机,每个虚拟主机和一个网络域名相匹配,每个虚拟主机下都可以部署一个或多个 Web App,每个 Web App 对应于一个 Context 和 Context 的 path;
- Context 节点对应着我们的 Web App,一个 Web App 由一个或多个 Servlet 组成。
好了,通过上面对与各个节点的介绍,想必大家对于 server.xml 的文档结构有了一个大致的了解,现在我们以 http://localhost:8080/lofei/welcome.jsp 地址为例再来梳理一下 tomcat 的处理流程:
请求被发送到本机的8080端口,被正在侦听的 Coyote HTTP/1.1 Connector 获得;
- Connector 把请求转交给它所在 Service 中的 Engine 来处理,并等待来自该 Engine 的回应;
- Engine 获取请求 localhost/lofei/welcome.jsp,匹配它所拥有的所有虚拟主机 HOST(当然有的请求匹配不到也没关系,Engine 有一个默认的虚拟主机,当请求无法匹配到任何 HOST 上时,就交给该默认 HOST 来处理。);
- Engine 匹配它所拥有的所有名为 localhost 的请求;
- 匹配到的 HOST 获得请求 /lofei/welcome.jsp,匹配它所有的 Context(如果匹配不到就把该请求交给路径名为""的 Context 去处理),匹配的 Context 为 path 为 lofei 的 Context;
- 匹配到的 Context 获得请求 /welcome.jsp,在 mapping table 中寻找对应的 servlet context 匹配到对应的页面;
- 构造 HttpServletRequest 对象和 HtppResponse 镀锡i昂,作为参数调用 JspServlet 的 doGet 和 doPost 方法;
- Context 把执行完了之后的 HttpServletResponse 对象返回给 Host;
- Host 把 HttpServletResponse 对象返回给 Engine;
- Engine 把 HttpServeletResponse 对象返回给 Connector;
- Connetor HttpServletResponse 对象返回给客户 browser。
详解
server.xml 的详细配置注解如下:
1 <? xml version=‘1.0‘ encoding=‘utf-8‘ ?> 2 3 <!-- 启动Server在端口8005处等待关闭命令,如果接收到“SHUTDOWN”字符串则关闭服务器 --> 4 < Server port ="8005" shutdown ="SHUTDOWN" > 5 < Listener className ="org.apache.catalina.startup.VersionLoggerListener" /> 6 < Listener className ="org.apache.catalina.core.AprLifecycleListener" SSLEngine ="on" /> 7 < Listener className ="org.apache.catalina.core.JasperListener" /> 8 < Listener className ="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> 9 < Listener className ="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> 10 < Listener className ="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> 11 12 13 < GlobalNamingResources > 14 < Resource name ="UserDatabase" auth ="Container" 15 type ="org.apache.catalina.UserDatabase" 16 description ="User database that can be updated and saved" 17 factory ="org.apache.catalina.users.MemoryUserDatabaseFactory" 18 pathname ="conf/tomcat-users.xml" /> 19 </ GlobalNamingResources > 20 21 <!-- Tomcat的Standalone Service,name用于指定service的名称,是一组 Connector 的集合,它们共用一个 Engine 来处理客户请求 --> 22 < Service name ="Catalina" > 23 <!-- Connector 表示客户端和Service之间的链接 24 port 指定服务器端要创建的端口号,并在这个端口监听来自客户端的请求 25 minProcessors 服务器启动时创建的处理请求的线程数 26 maxProcessors 最大可以创建的处理请求的线程数 27 enableLookupas 如果为true,则可以通过调用 request.getRemoteHost()进行 DNS 查询来得到远程客户端的实际主机名,若为 false 则不进行DNS查询,
而返回的是其IP地址; 28 redirectPort 指定服务正在处理 http 请求时收到了一个 SSL 传输请求后重定向的端口号 29 acceptCount 指定当前所有可以使用的处理请求的线程都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理 30 connectionTimeout 指定超时的时间数(单位:毫秒) 31 下面的示例中:第一个监听器监听8080端口,负责建立HTTP连接,在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器;第二个连接器监听8009
端口,负责和其他的 HTTP服务器建立连接,在Tomcat与其他HTTP服务器集成时,就需要用到这个连接器。 33 --> 34 < Connector port ="8080" protocol ="HTTP/1.1" 35 connectionTimeout ="20000" 36 redirectPort ="8443" /> 37 < Connector port ="8009" protocol ="AJP/1.3" redirectPort ="8443" /> 38 39 <!-- 表示指定 service 中请求处理引擎,接收和处理来自 Connector 的请求 40 defaultHost 指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的 41 --> 42 < Engine name ="Catalina" defaultHost ="localhost" > 43 <!-- 表示存放用户名,密码,以及role的数据库 --> 44 < Realm className ="org.apache.catalina.realm.LockOutRealm" > 45 < Realm className ="org.apache.catalina.realm.UserDatabaseRealm" 46 resourceName ="UserDatabase" /> 47 </ Realm > 48 49 <!-- 表示一个虚拟主机 50 name 指定主机名 51 appBase 应用程序基本目录,即存放应用程序的目录 52 unpackWARs 如果为true,则tomcat会自动将war文件解压,否则不解压,直接从war文件中运行应用程序 53 --> 54 < Host name ="localhost" appBase ="webapps" 55 unpackWARs ="true" autoDeploy ="true" > 56 57 <!-- 表示日志、调试和错误信息 58 prefix 指定log文件的前缀 59 suffix 指定log文件的后缀 60 pattern 有两个值,common方式记录远程主机名或ip地址、用户名、日期、第一样请求的字符串、HTTP响应代码、发送的字节数,combinded方式比common方式记录的值更多 61 --> 62 < Valve className ="org.apache.catalina.valves.AccessLogValve" directory ="logs" 63 prefix ="localhost_access_log." suffix =".txt" 64 pattern ="%h %l %u %t "%r" %s %b" /> 65 66 <!-- 表示一个web应用程序,通常为war文件 67 docBase 应用程序的路径或者是war文件存放的路径 68 path 表示此web应用程序的url的前缀,这样请求的url为http://localhost:8080/path/*** 69 reloadable 这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,我们可以在不重启tomcat 70 的情况下改变应用程序 71 --> 72 < Context path ="" docBase ="" /> 73 74 <!-- 表示日志、调试和错误信息 75 prefix 指定log文件的前缀 76 suffix 指定log文件的后缀 77 timestamp 如果为tur,则log文件名中要加入时间,如:localhost_log.001-12-22.txt --> 78 < Logger className ="org.apache.catalina.logger.FileLogger" /> 79 </ Host > 80 </ Engine > 81 </ Service > 82 </ Server >
原文:http://www.cnblogs.com/krockey/p/5066644.html
内容总结
以上是互联网集市为您收集整理的Tomcat 初探(二) server.xml 配置全部内容,希望文章能够帮你解决Tomcat 初探(二) server.xml 配置所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。