tomcat-server配置解析

Server配置解析

简介

         Server配置文件位于tomcat/conf/目录下,这个配置文件在tomcat启动的时候会使用Digester技术解析这个XML文件,创建一个Server实例。那么解读配置的时候,可以将这个配置文件看作一个对象,层级关系表示他们的从属关系。标签的属性就是对象的属性。

1.   Server标签

Server对象初始化后,作为Catalina的属性,那么在Catalina中,Server对象的默认实现为org.apache.catalina.core.StandardServer类,如果想替换这个实现类,可以通过className属性指定自己的实现类。在这个对象创建完毕后,调用Catalina的setServer方法设置。

2.   Server/Listener标签

Listener标签主要是配置Server的监听器,默认配置了5个监听器,如下:

  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />

  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />

  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

监听器作用

描述

AprLifecycleListeners

Server初始化之前加载APR库,并且在Server停止后销毁

VersionLoggerListener

Server初始化之前打印操作系统/JVM以及服务器的版本信息

JreMemoryLeakPreventionListener

Server初始化之前调用,解决单例对象创建导致的JVM内存泄露问题以及锁文件问题

GlobalResourcesLifecycleListener

Server启动的时候,将JNDI资源注册为MBean进行管理

ThreadLocalLeakPreventionListenerss’s

用于在Context停止时重建Executor池中的线程,避免导致内存泄露

3.   Server/ GlobalNamingResources标签

这个标签主要是定义Server对象的全局属性。

4.   Server/Service标签

Service主要定义项目启动时候的服务配置,例如端口,连接方式是单机还是集群等。Catalina也提供了默认的Service实现:org.apache.catalina.core.StandardService类。当然如果觉得这个实现不符合你的需求,可以使用className属性设置自己认为合适的实现。具体的实现可以看tomcat的API文档说明。

5.   Service/ Executor标签

Executor标签默认是注释的,该类的默认实现为:org.apache.catalina.core.StandardThreadExecutor类,当然也是通过通过className配置自己认为的类。这个类主要是定义线程池的,如果链接器(Connector标签)需要使用线程池,就可以通过这个配置线程池的实现。

6.   Service/Connector标签

Connector标签是配置tomcat的连接方式的,默认是使用Http1.1协议,端口为8080,连接超时时间为20000,重定向端口为8443。

<Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />

Tomcat还提供了AJP协议的连接方式。

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

在tomcat中8.5之后还支持HTTP2.0协议,其它连接配置如下(也可以通过server配置文件阅读,配置英文说明有道就可以翻译):

<!-- A "Connector" using the shared thread pool-->

    <!--

    <Connector executor="tomcatThreadPool"

               port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />

-->

    <!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443

         This connector uses the NIO implementation. The default

         SSLImplementation will depend on the presence of the APR/native

         library and the useOpenSSL attribute of the

         AprLifecycleListener.

         Either JSSE or OpenSSL style configuration may be used regardless of

         the SSLImplementation selected. JSSE style configuration is used below.

    -->

    <!--

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"

               maxThreads="150" SSLEnabled="true">

        <SSLHostConfig>

            <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"

                         type="RSA" />

        </SSLHostConfig>

    </Connector>

-->

    <!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2

         This connector uses the APR/native implementation which always uses

         OpenSSL for TLS.

         Either JSSE or OpenSSL style configuration may be used. OpenSSL style

         configuration is used below.

    -->

    <!--

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"

               maxThreads="150" SSLEnabled="true" >

        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />

        <SSLHostConfig>

            <Certificate certificateKeyFile="conf/localhost-rsa-key.pem"

                         certificateFile="conf/localhost-rsa-cert.pem"

                         certificateChainFile="conf/localhost-rsa-chain.pem"

                         type="RSA" />

        </SSLHostConfig>

    </Connector>

    -->

7.   Engine标签

Engine(引擎)作为Service的属性,在解析的时候会默认为Engine添加一个生命周期的监听器:EngineConfig类,这个类是默认添加的,并不是通过server.xml配置实现,该监听器还用于打印Engine的启动和停止日志。如果还需要配置额外的监听器,可以使用Listener标签配置。

8.   Host标签

Host是Engine的域名配置,默认是localhost。Catalina默认实现org.apache.catalina.core.StandardHost。同样还默认添加了生命周期的监听器HostConfig。这个监听器不是通过server.xml配置的。通过Alias标签还可以为Host配置别名。

猜你喜欢

转载自blog.csdn.net/sinat_32366329/article/details/80233300