Tomcat服务器
Tomcat服务器是由一系列可配置的组件构成,其核心组件是Catalina Servlet容器,它是所有其他Tomcat组件的顶层容器。Tomcat的组件可以在/conf/server.xml文件中进行配置,每个Tomcat组件在server.xml文件中对应一种配置元素。
Tomcat配置文件
代码以XML的形式展示了各种Tomcat组件之间的关系:
<?xml version='1.0' encoding='utf-8'?>
<!--Server 是顶级组件,代表一个 Tomcat 实例。可以包含一个或多个 Services ,其中每个 Service 都有自己的
Engines 和 Connectors。-->
<!--server 在这个端口上监听一个 shutdown 命令。设置为 -1 表示禁用 shutdown 命令。-->
<Server port="8005" shutdown="SHUTDOWN">
<!--Server 可以包含几个监听器。一个监听器监听指定事件,并对其作出响应。-->
<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" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<!--作用于全局资源,保证 JNDI 对资源的可达性,比如数据库。-->
<!--"GlobalNamingResources"元素定义了 JNDI(Java 命名和目录接口)资源,其允许 Java 软件客户端通过
名称搜寻和查找数据。-->
<GlobalNamingResources>
<!--"Resource"元素定义了一个名称为 UserDatabase 的 JNDI,通过”conf/tomcat-users.xml“得到了一
个用于用户授权的内存数据库。-->
<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" />
<!--Demo配置
<Resource jdbcUrl="jdbc:oracle:thin:@localhost:1521:orcl" user="system"
password="system" name="ds/local_sxnx" auth="Container"
description="Oracle 10g Connection Pool" maxPoolSize="10" minPoolSize="2"
acquireIncrement="2" factory="org.apache.naming.factory.BeanFactory"
type="com.mchange.v2.c3p0.ComboPooledDataSource" driverClass="oracle.jdbc.driver.
OracleDriver" />
-->
<Resource jdbcUrl="jdbc:oracle:thin:@9.1.10.65:1521:orcl" user="inlc" password="inlc"
name="ds/local" auth="Container"
description="Oracle 10g Connection Pool" maxPoolSize="10" minPoolSize="2"
acquireIncrement="2" factory="org.apache.naming.factory.BeanFactory"
type="com.mchange.v2.c3p0.ComboPooledDataSource" driverClass="oracle.jdbc.driver.
OracleDriver" />
</GlobalNamingResources>
<!--一个 Service 可以连接一个或多个 Connectors 到一个引擎。默认配置定义了一个名为“Catalina”的 Service ,
连接了两个 Connectors:HTTP 和 AJP 到当前的引擎。-->
<!--className:该实现使用的 Java 类名称。这个类必须实现 org.apache.catalina.Service 接口。如果没有指定
类名称,将会使用标准实现。-->
<!--name:Service 的显示名称,如果采用了标准的 Catalina 组件,将会包含日志信息。每个 Service 与某个特定的
Server 关联的名称必须是唯一的。-->
<Service name="Catalina">
<!--一个 Connector 关联到一个 TCP 端口,负责处理 Service 与客户端之间的交互。默认配置定义了两个
Connectors。-->
<!--注:HTTP/1.1:处理 HTTP 请求,使得 Tomcat 成为了一个 HTTP 服务器。客户端可以通过 Connector
向服务器发送 HTTP 请求,接收服务器端的 HTTP 响应信息。-->
<Connector port="81" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<!--容器:包含了 Engine、Host、Context和 Cluster 的 Tomcat 称为容器。最高级的是 Engine,最底层
的是 Context。某些组件,比如 Realm 和 Valve,也可以放在容器中。-->
<!--引擎是容器中最高级别的部分。可以包含一个或多个 Host。Tomcat 服务器可以配置为运行在多个主机名上,
包括虚拟主机。-->
<!--Catalina 引擎 从 HTTP connector 接收 HTTP 请求,并根据请求头部信息中主机名或 IP 地址重定向到
正确的主机上。-->
<Engine name="Catalina" defaultHost="localhost">
<!-- Use the LockOutRealm to prevent attempts to guess user passwords
via a brute-force attack -->
<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" />
</Host>
</Engine>
</Service>
</Server>