Tomcat是JEE开发人员最常用到的开发工具,在Java Web应用的调试开发和实际部署中,我们都可以看到Tomcat的影子。大多数时候,我们可以将Tomcat当做一个黑盒来看待,只需要将编写的Java Web工程进行部署即可,但是,在遇到一些比较复杂难解决的问题时,如果我们了解了Tomcat的内部实现原理将会处理起来更得心应手更快地定位问题。另外,通过学习Tomcat的源码还可以更加深入地了解JEE规范,学习常见的设计模式。本系列的文章,将会介绍Tomcat的核心功能是如何实现的,一方面作为自己学习的总结,另一方面也希望给学习Tomcat的朋友提供一点帮助材料。
本文首先介绍Tomcat的基本配置,涉及的配置文件就是\conf\server.xml文件。Tomcat本身通过一系列的连接器和内部组件来分别实现网络请求的监听和处理。一个示例性的server.xml如下:
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JasperListener" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" resolveHosts="false"/>
</Host>
</Engine>
</Service>
</Server>
从上面的配置我们中,位于配置文件顶层的是Server和Service元素,其中Server元素是整个配置文件的根元素,而Service元素则是配置服务器的核心元素。在Service元素内部,定义了一系列的连接器和内部容器类的组件。现在分别对其进行简单的介绍,后续的文章将会对其进行逐一分析。
<Server>元素对应的是整个Servlet容器,是整个配置的顶层元素,由org.apache.catalina.Server接口来定义,默认的实现类是org.apache.catalina.core.
StandardServer。该元素可配置的属性主要是port和shutdown,分别指的是监听shutdown命令的端口和命令(这两个属性没玩过,后续试试)。在该元素中可以定义一个或多个<Service>元素,除此以外还可以定义一些全局的资源或监听器。
<Service>元素由org.apache.catalina.Service接口定义,默认的实现类为org.apache.catalina.core.
StandardService。在该元素中可以定义一个<Engine>元素、一个或多个<Connector>元素,这些<Connector>元素共享同一个<Engine>元素来进行请求的处理。
<Engine>元素由org.apache.catalina.Engine元素来定义,默认的实现类是org.apache.catalina.core.
StandardEngine。<Engine>元素会用来处理<Service>中所有<Connector>接收到的请求,在<Engine>中可以定义多个<Host>元素作为虚拟主机。<Engine>是Tomcat配置中第一个实现org.apache.catalina.Container的接口,因此可以在其中定义一系列的子元素如<Realm>、<Valve>。
<
Connector >元素由org.apache.catalina.connector. Connector类来定义。< Connector>是接受客户端浏览器请求并向用户最终返回响应结果的组件。该元素位于< Service>元素中,可以定义多个,在我们的示例中配置了两个,分别接受AJP请求和HTTP请求,在配置中,需要为其制定服务的协议和端口号。
<Host>元素由org.apache.catalina.Host接口来定义,默认实现为org.apache.catalina.core.
StandardHost,该元素定义在<Engine>中,可以定义多个。每个<Host>元素定义了一个虚拟主机,它可以包含一个或多个Web应用(通过<Context>元素来进行定义)。因为<Host>也是容器类元素,所以可以在其中定义子元素如<Realm>、<Valve>。
<Context>元素由org.apache.catalina.Context接口来定义,默认实现类为org.apache.catalina.core.
StandardContext。该元素也许是大家用的最多的元素,在其中定义的是Web应用。一个<Host>中可以定义多个<Context>元素,分别对应不同的Web应用。该元素的属性,大家经常会用到如path、reloadable等,可以在<Context>中定义子元素如<Realm>、<Valve>。
以上简单介绍了Tomcat元素的配置,使我们可能对这个庞大的产品有个整体的了解,后续会对每个部分进行详细的介绍,下部分会首先介绍Tomcat的启动流程。
分享到:
相关推荐
Tomcat server.xml配置文件详解Tomcat server.xml配置文件详解Tomcat server.xml配置文件详解Tomcat server.xml配置文件详解Tomcat server.xml配置文件详解Tomcat server.xml配置文件详解Tomcat server.xml配置文件...
为tomcat服务器配置https,tomcat需要设置的server.xml与web.xml配置。可以帮助小白为tomcat服务器配置https协议(域名)。
Tomcat中server.xml的配置,因为很多刚入门的人可能会因为,错误修改或者删除而使Tomcat运行出现异常
Tomcat8.5服务器server.xml文件,误删的可以下载,Tomcat服务器server.xml基本都是一样的,只是版本不一样
TOMCAT连接池DBCP,在server.xml中配置全局数据源详细的介绍,很有好用啊!!
Tomcat配置文件server.xml说明.doc
tomcat server.xml配置说
tomcatserver.xml配置详解.pdf
tomcat_server.xml中各个属性的解释含义
说明:以下文字均以tomcat5.0.30为例进行。 1,配置tomcat服务器访问端口,只需配置Connector的port端口即可。Tomcat默认为8080,现修改port参数值为80。
server.xml配置简介
tomcat配置文件web.xml与server.xml解析
(Tomcat服务器)详细解读server.xml文件
tomcat 中 server.xml配置详解,仅作参考
在工作中总结的Tomcat中web.xml,server.xml的详细配置文件的说明,还有例子。包含web.xml,server.xml配置文件中的所有配置,想详细了解web.xml,server.xml配置的朋友,还是很有帮助的。 在总结的过程中,查阅了大量...
自己一不小心误删了本地tomcat下的配置文件中的server.xml文件,从而导致本地tomcat服务无法statup,于是把别人的同一版本的tomcat下的server.xml文件拷贝一份到原来的目录,然后就可以启动了。
Tomcat5.5 的配置文件server.xml 真是的开发项目开发应用服务器配置
tomcat配置讲解(server.xml)
tomcat server.xml配置;1:支持虚目录,如上传的文件放置到tomcat webapp置为的目录 2:配置https 3:配置多域名
server.xml主要用来控制tomcat的运行,jboss的web容器其实是对tomcat的封装,一般在jboss\server\default\deploy\jbossweb-tomcat.sar目录下。