本文主要讲一下与Tomcat相关的配置,主要包括下面四个方面:
1、JVM相关配置:Tomcat启动时支持的JVM相关配置
2、服务器相关配置:conf下面的配置
3、web应用相关配置:servlet容器相关以及web应用定制部署
4、管理配置
一、JVM先关配置
1、JVM内存配置
set JAVA_OPTS=-server -Xms1024m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m (Windows下)
JAVA_OPTS="-server -Xms1024m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m" (Linux下)
把上面的添加到启动文件(catalina.bat或者catalina.sh)的首行
其中:
Xms:堆内存的初始大小
Xmx:表示堆内存的最大值
XX:PermSize:非堆内存的大小,在JDK1.8已经改为-XX:MetaspaceSize ,也就是元数据空间
XX:MaxPermSize:非堆内存的最大值,同样在JDK1.8改为-XX:MaxMetaspaceSize
更多配置请参看http://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html#CBBIJCHG
二、服务器相关配置
1、conf/catalina.properties文件
主要用于Catalina容器启动阶段的配置文件。
package.access:限制是否可以访问某个包下的类
package.definition:限制是否可以在某个包下面定义类
common.loader:Tomcat公共类加载器加载jar包路径列表
common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar
server.loader:应用服务器类加载器加载jar 包路径列表,默认为空,使用公共类加载器来加载
shared.loader:web应用父类加载器加载jar包路径列表,默认为空使用公共类加载器
tomcat.util.scan.DefaultJarScanner.jarsToSkip:tomcat使用JarScanner扫描JAR包时可以跳过的JAR包列表
。。。。
2、server.xml
1、Server
<Server port="8005" shutdown="SHUTDOWN">
port:tomcat监听的关闭服务器你的端口
Server可以内嵌的元素为:<Service>、<GlobalNamingResources>、<Listeners>
Service:用于创建Service实例
<Service name="Catalina">
<--默认没有,minSpareThreads是备用线程的最小数量
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="150" minSpareThreads="4"/>-->
注: 当希望提高服务器请求并发处理能力时,我们需要同时修改线程池的配置,此时增加共享线程池可以灵活配置来提升线程使用率节省系统资源
<Connector port="8888" protocol="HTTP/1.1” connectionTimeout="20000" redirectPort="8443" />
支持http协议
<!--使用共享线程池的连接器,默认没有开启->
<!--<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-->
<!---->
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->
<!-- 使用AJP1.3协议监听端口8009-->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
-->
< Engine name="Catalina" defaultHost="localhost">
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> //用于集群配置
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
//Host用于配置Tomcat虚拟主机组件
<Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<!--<Context docBase="ivis-0.0.1" path="/ivis" reloadable="false"/>-->
</Host>
</Engine>
</Service>
GlobalNamingResources:定义了全局的命名服务
Listeners:为Server添加生命周期监听器