1.conf/server.xml进行讲解
1.1server根目录
<!--
port:关闭服务的监听端口
shutdown:关闭服务器的指令字符串
-->
<Server port="8005" shutdown="SHUTDOWN">
<!-- 以日志形式输出服务器、操作系统、JVM版本信息 -->
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<!-- 加载(服务器启动)和销毁(服务器停止)APR。如果找不到APR库,则会输出日志,并不影响Tomcat启动 -->
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<!-- 避免JRE内存泄漏 -->
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<!-- 加载(服务器启动)和销毁(服务器停止)全局命名服务 -->
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<!-- 在context停止时重建Executor池中的线程,以避免ThreadLocal相关的内存泄漏 -->
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<!-- 全局命名服务 -->
<GlobalNamingResources>
<!-- 这个resource主要是把登录的用户放到tomcat-user.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" />
</GlobalNamingResources>
上面的xml文件讲解的很清晰了,不过这5个监听器是必要的页无需改动
1.2 server的目录
server目录包含connector和Container
Container包含:Engine标签,Host标签,Context标签
connector:可以使用这个连接容器service
Engine:这个可以默认选用那个虚拟机
Host:这个虚拟机
Context:这个表示的是这个虚拟机走哪个war包
<Context docBase="ROOT" path="/root" reloadable="true" ></Context>
<Context docBase="ROOT-TEST" path="/test" reloadable="true" ></Context>
可以再tomcat找webapps找ROOT文件夹,可以通过连接找到这个文件夹
http://sun.jian.hua:8080/root/
其中sun.jian.hua是指对应的虚拟机
http://sun.jian.hua:8080/test/ 这个可以找tomcat的webapps的ROOT-TEST文件夹
配置虚拟机
<Host name="sun.jian.hua" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context docBase="ROOT" path="/root" reloadable="true" ></Context>
<Context docBase="ROOT-TEST" path="/test" reloadable="true" ></Context>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
在hosts文件下面添加------>127.0.0.1 sun.jian.hua
下面是server的目录下的配置
<server>
<!-- 默认情况下,Service并添加共享线程池配置。如果我们想添加一个线程池,可以在<Service>下添加如下配置:
name:线程池名称,用于Connector中指定
namePrefix:所创建的每个线程的名称前缀,一个单独的线程名称为namePrefix+threadNumber
maxThreads:池中最大线程数
minSpareThreads:活跃线程数,也就是核心池线程数,这些线程不会被销毁,会一直存在
maxIdleTime:线程空闲时间,超过该时间后,空闲线程会被销毁默认值为6000(1分钟)单位毫秒
maxQueueSize:在被执行前最大线程排队数目,默认为Int的最大值
prestartminSpareThreads:启动线程池时是否启动minSpareThreads部分线程,默认为false
threadPriority:线程池中线程优先级,默认为5,值从1到10
className:线程池实现类,未指定情况下,默认实现类org.apache.catalina.core.StandartThreadExecutor。如果想使用自定义线程池首先需要实现org.apache.catalina.Executor接口 -->
<Executor name="commonThreadPool"
namePrefix="thread-exec-"
maxThreads="200"
mixIdleTime="6000"
maxQueueSize="Integer.MAX_VALUE"
prestartminSpareThreads="false"
threadPriority="5"
className="org.apache.catalina.core.StandardThreadExecutor"
>
<!-- 如果executor没有出现,tomcat可以自己维护自己的一个线程池 -->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
executor="commonThreadPool"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
</server>
<!-- name:用于指定Engine的名称,默认为Catalina
defaultHost:默认使用的虚拟主机名称,当客户端请求指向的主机无效时,将交由默认的虚拟主机处理,默认为localhost -->
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<!-- host标签由于配置一个虚拟主机 -->
<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>
<Host name="sun.jian.hua" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context docBase="ROOT" path="/root" reloadable="true" ></Context>
<Context docBase="ROOT-TEST" path="/test" reloadable="true" ></Context>
<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>