技术开发Tomcat首页投稿(暂停使用,暂停投稿)

tomcat系列-03-server.xml

2016-11-10  本文已影响128人  hylexus

[TOC]

本文将介绍tomcat配置文件server.xml中常用的节点配置。

1 整体结构

server.xml文件的整体结构其实和上一篇文章中我们所说的tomcat-体系结构图是对应的:

tomcat-体系结构图

以下是一个包括常见元素的基础的server.xml配置:

<Server port="8005" shutdown="SHUTDOWN">
    <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
    <Listener SSLEngine="on"
        className="org.apache.catalina.core.AprLifecycleListener" />
    <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" />

    <GlobalNamingResources>
        <Resource auth="Container" description="User database that can be updated and saved"
            factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase"
            pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase" />
    </GlobalNamingResources>

    <Service name="Catalina">

        <Connector URIEncoding="UTF-8" connectionTimeout="20000"
            port="80" protocol="HTTP/1.1" redirectPort="8443" />
        <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

        <Engine defaultHost="localhost" name="Catalina">

            <Realm className="org.apache.catalina.realm.LockOutRealm">
                <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                    resourceName="UserDatabase" />
            </Realm>

            <Host appBase="webapps" autoDeploy="true" name="localhost"
                unpackWARs="true">

                <Valve className="org.apache.catalina.valves.AccessLogValve"
                    directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log."
                    suffix=".txt" />

            </Host>
        </Engine>
    </Service>
</Server>

2 Server节点

<Server port="8005" shutdown="SHUTDOWN">
<!-- .......  -->
</Server>

这会让Tomcat启动一个server实例(即一个JVM),它监听在8005端口以接收shutdown命令。
各Server的定义不能使用同一个端口,这意味着如果在同一个物理机上启动了多个Server实例,必须配置它们使用不同的端口。
管理员可以直接telnet至此端口使用SHUTDOWN命令关闭此实例。不过,基于安全角度的考虑,这通常不允许远程进行.
其实server节点就是代表tomcat自己了。

Server的相关属性

3 Listener

** 注意:此处的server.xml中的Listener和部署描述符web.xml文件中的Listener并不是一回事。**

4 Service节点

4.1 Connector

4.1.1 Connector类型

4.1.2 Connector常见属性

4.1.3 几种Connector示例

HTTP connector 示例

<Connector port="8080" protocol="HTTP/1.1"
      maxThreads="150" connectionTimeout="20000"
      redirectPort="8443" URIEncoding="UTF-8"/>

SSL connector 示例

<Connector port="8443"
    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" acceptCount="100" debug="0" scheme="https" secure="true"
    clientAuth="false" sslProtocol="TLS" />

AJP connector 示例

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

4.2 Executor

可以通过Excutor为同一个Service的所有Connector配置一个共享线程池。
在多个Connector的状况下,这样处理非常有用,多个Connector共享一个线程池。

<Service name="Catalina">

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>

    <Connector executor="tomcatThreadPool" URIEncoding="UTF-8" 
                 connectionTimeout="20000" port="80" protocol="HTTP/1.1" 
                 redirectPort="8443"/>
</Service>

Excutor的详细参数配置请点击这里看官网文档

4.3 Engine节点

<Engine name="Catalina" defaultHost="localhost">

Engine是Servlet处理器的一个实例,即servlet引擎。
Engine容器中可以包含Realm、Host、Listener和Valve子容器。

4.3.1 Engine常见属性

<Engine defaultHost="localhost" name="Catalina">
    <!--此处应该至少有一个名为localhost的Host节点-->
</Engine>

4.3.2 Host节点

Host节点代表一个虚拟主机,类似于Nginx中的server指令。

<Host name="localhost" appBase="webapps"
    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
    <!-- host...  -->
</Host>

4.3.3 Context节点

一个Context定义用于标识tomcat实例中的一个Web应用程序

<Host appBase="webapps" autoDeploy="true" name="localhost"
    unpackWARs="true">
    
    <Valve className="org.apache.catalina.valves.AccessLogValve"
        directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" 
        prefix="localhost_access_log."
        suffix=".txt" />

    <Context docBase="web-1" path="/web-1" reloadable="true"
        source="org.eclipse.jst.jee.server:web-1" />
    <Context docBase="ROOT" path=""></Context>
</Host>

4.3.4 WatchedResource

定义被监控的程序清单。
比如web.xml被修改时应用会自动重新加载,就是因为web.xml文件在${CATALINA_HOME}/conf/context.xml文件中被标记为一个WatchedResource。

<Context docBase="web-1" path="/web-1" reloadable="true"
    source="org.eclipse.jst.jee.server:web-1">
    <WatchedResource>WEB-INF/log4j.xml</WatchedResource>
</Context>

4.3.5 Realm

Realm和认证授权相关。

<Engine defaultHost="localhost" name="Catalina">
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
            resourceName="UserDatabase" />
    </Realm>
</Engine>

5 GlobalNamingResources节点

应用于整个服务器的JNDI映射,此可以避免每个Web应用程序都需要在各自的web.xml创建,这在web应用程序以WAR的形式存在时尤为有用。它通常可以包含三个子元素:

6 Manager

Manger对象用于实现HTTP会话管理的功能

7 Valve

有关Value的详细配置请看官方文档

不知不觉就码了这么多字符…………以后有时间再写有关Valve的文章吧……

上一篇 下一篇

猜你喜欢

热点阅读