一、什么是tomcat?
tomcat是一款实现了javaee规范的应用服务器,目前市场上最流行的开源服务器。
二、server.xml文件
<?xml version='1.0' encoding='utf-8'?> <!-- 监听8005端口负责监听关闭tomcat的请求;SHUTDOWN是指定向端口发送的命令字符串--> <Server port="8005" shutdown="SHUTDOWN"> <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" /> <GlobalNamingResources> <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> <!-- 可以有多个Service, name定义Service的名字 className 指定实现org.apahce.catalina.Service接口的类.默认为org.apahce.catalina.core.StandardService --> <Service name="Catalina"> <!-- 表示客户端和service之间的连接 port 指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求 minProcessors 服务器启动时创建的处理请求的线程数 maxProcessors 最大可以创建的处理请求的线程数 enableLookups 如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址 redirectPort 指定服务器正在处理https请求时重定向的端口号 acceptCount 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理 connectionTimeout 指定超时的时间数(以毫秒为单位) --> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <!-- AJP连接器可以通过AJP协议和一个web容器进行交互--> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <!-- 表示指定service中的请求处理机,接收和处理来自Connector的请求,每个Service元素只能有一个Engine元素 name Engine的名字 defaultHost 指定处理客户的默认主机名,在<Engine>中的<Host>子元素中必须定义这一主机 --> <Engine name="Catalina" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <!-- Host表示一个虚拟主机,一个Engine元素可以包含多个<Host>元素 name表示主机名 appBase 应用程序基本目录,即存放应用程序的目录 unpackWARs 为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序。 autoDeploy 默认为true,表示如果有新的WEB应用放入appBase 并且Tomcat在运行的情况下,自动载入应用 --> <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" /> <!-- Context表示一个web应用程序,一个Host元素可以包含多个<Context>元素 docBase 应用程序的路径 path表示此web应用程序的url的前缀,这样请求的url为http://localhost:8080/path/**** reloadable 如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序 useNaming:如果希望Catalina为该web应用使能一个JNDI InitialContext对象,设为true。该InitialialContext符合J2EE平台的约定,缺省值为true。 workDir:Context提供的临时目录的路径,用于servlet的临时读/写。利用javax.servlet.context.tempdir属性,servlet可以访问该目录。如果没有指定,使用$CATALINA_HOME/work下一个合适的目录。 swallowOutput:如果该值为true,System.out和System.err的输出被重定向到web应用的logger。如果没有指定,缺省值为false debug:与这个Engine关联的Logger记录的调试信息的详细程度。数字越大,输出越详细。如果没有指定,缺省为0。 --> <Context docBase="smartCity-XXX" path="smartCity-XXX" reloadable="true"/> </Host> </Engine> </Service> </Server>