经过一年的工作学习,不断的熟悉了javaweb方面的开发,现在才想起整理起一年来学习的点点滴滴。
首先在工作中,我使用的居多的web应用服务器有tomcat、weblogic以及webSphere,今天主要总结对使用最多的中间件Tomcat部署的配置文件server.xml中各个常用标签的使用方法以及详细功能。
server.xml结构
<Server>
<Listener />
<GlobaNamingResources>
</GlobaNamingResources>
<Service>
<Connector />
<Engine>
<Logger />
<Realm />
<host>
<Logger />
<Context />
</host>
</Engine>
</Service>
</Server>
1.<Server>标签
1.1属性"port"指定的端口用于监听tomcat的关闭请求
1.2属性"shutdown"用于指定向此端口发送的命令字符串。
<Server port="8015" shutdown="SHUTDOWN">
</Server>
2<Service>标签
2.1属性"name"用于指定service的名称
<Service name="Catalina">
3<Connector>标签
3.1属性port用于指定服务器端需要创建的端口号,用于监听来自客户端的访问请求,80为默认端口,可以不输入端口号进行访问,如http://localhost/path
3.2属性maxThread用于指定该线程池可以容纳的最大线程数,主要用于tomcat的性能优化
3.3属性minSpareThreads指定Tomcat应该始终打开的最小不活跃线程数
3.4属性maxSpareThreads于上反义
3.5属性enableLookups如果为true则可以通过调用request.getRemoteHost()方法进行DNS查询获取客户端的实际主机名称,否则则不进行DNS查询,则返回IP地址
3.6属性redirectPort用于指定正在处理的http请求时收到的一个SSL传输请求后重定向的端口号
3.7属性acceptCount指定当所有可以使用的处理请求的线程资源都正在被使用时,可以放到处理等待队列中的请求个数,如果超过这个数值将不给予处理
3.8属性debug用于设置日志等级,0表示不打印日志
3.9属性connectionTimeout用于设置等待超时时间以毫秒计算
3.10属性disableUploadTimeout设置禁用上传超时,当碰到大数据上传时如果经常超时报错可以使用
此属性3.11属性protocol一般默认使用AJP/1.3协议
3.12 属性URIEncoding编码类型,一般对于处理URL提交的数据和表单中get方式提交的数据出现乱码的时候,可以尝试修改此处的编码类型
一般情况下,如果需要多个端口一般默认复制之前的端口并修改Port就再次重启tomcat即可
<Connector port="80" maxThreads="50" minSpareThreads="25" maxSpareThread="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>
<Connection port="8009" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" />
4.<Engine>标签,用于指定service中的请求处理机,接收和处理来自Connector的请求
4.1属性defaultHost用于指定缺省的处理请求的主机名,它至少与其中的一个Host元素的Name属性一致
<Engine name="Catalina" defaultHost="localhost">
5.<Host>标签
5.1属性name指定主机名。
5.2属性appBase用于指定应用程序基本目录。
5.3属性unpackWARs如果为true,则tomcat会自动将WAR文件解压,否则不接呀,直接从WAR包中运行应用程序。
5.4属性autoDeploy默认为true,表示如果有行的WEB应用放入appBase并且Tomcat在运行的情况下,自动载入应用。
5.5属性xmlValidation表示XML校验
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
6.<Context>标签
6.1docBase表示应用程序的路径或是WAR包的存放路径
6.2path表示web访问url项目前缀,以后url访问为http://localhost:8080/path
6.3reloadable如果为true则tomcat会自动检测应用程序的/WEB-INF/lib以及/WEB-INF/classes目录的变化情况,自动装载新的应用程序,在开发阶段将reloadable属性设为true,有助于调试servlet和其它的class文件,但这样用加重服务器运行负荷,建议在Web应用的发布阶段将reloadable设为false。这一点很重要,因为以前在CSDN看到一篇因为生产环境没有设置为false的惨痛教训,借鉴大佬链接:一次由Tomcat重新加载引发的血案
<Context path="/appWeb" docBase="appWeb的绝对或相对路径" reloadable="true"/>
7.<Realm>标签,用于表示存放用户名,密码以及role的数据库
7.1属性className指定使用的类名,此类必须实现org.apache.catalina.Realm接口
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
8.<Logger>表示日志,调试和错误信息。
8.1属性className指定Logger使用的类名,此类必须实现org.apache.catalina.Logger接口
8.2属性prefix指定log文件的前缀。
8.3属性suffix指定log文件的后缀。
8.4属性timestamp如果为true,则Log文件名中间要加入时间,例如:localhost_log.2017-09-01.txt
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="catalina_log." suffix=".txt"
timestamp="true"/>