Tomcat基础

来自linux中国网wiki
跳到导航 跳到搜索

tomcat之server.xml配置说明

最常用

Server port="8005" shutdown="SHUTDOWN">
<!-- 属性说明
	port:指定一个端口,这个端口负责监听关闭Tomcat的请求
	shutdown:向以上端口发送的关闭服务器的命令字符串
-->

<Connector port="80" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />
    <!-- 属性说明
		port:服务器连接器的端口号,该连接器将在指定端口侦听来自客户端的请求。
		enableLookups:如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名;
					若为false则不进行DNS查询,而是返回其ip地址。
		redirectPort:服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号。
		acceptCount:当所有可以使用的处理请求的线程都被用光时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,而返回Connection refused错误。
		connectionTimeout:等待超时的时间数(以毫秒为单位)。
		maxThreads:设定在监听端口的线程的最大数目,这个值也决定了服务器可以同时响应客户请求的最大数目.默认值为200。
		protocol:必须设定为AJP/1.3协议。
		address:如果服务器有两个以上IP地址,该属性可以设定端口监听的IP地址,默认情况下,端口会监听服务器上所有IP地址。
		minProcessors:服务器启动时创建的处理请求的线程数,每个请求由一个线程负责。
		maxProcessors:最多可以创建的处理请求的线程数。
		minSpareThreads:最小备用线程 。
		maxSpareThreads:最大备用线程。
		debug:日志等级。
		disableUploadTimeout:禁用上传超时,主要用于大数据上传时。
    -->

全部

<Server port="8005" shutdown="SHUTDOWN">
<!-- 属性说明
	port:指定一个端口,这个端口负责监听关闭Tomcat的请求
	shutdown:向以上端口发送的关闭服务器的命令字符串
-->

  <Listener className="org.apache.catalina.core.AprLifecycleListener" />
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>

  <GlobalNamingResources>

    <Environment name="simpleValue" type="java.lang.Integer" value="30"/>

    <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元素只能有一个Engine元素.元素处理在同一个<Service>中所有<Connector>元素接收到的客户请求
-->
  <Service name="Catalina">
<!-- 属性说明
	name:Service的名称
-->

    <!--
		Connector元素:
			由Connector接口定义.<Connector>元素代表与客户程序实际交互的组件,它负责接收客户请求,以及向客户返回响应结果.
    -->
    <Connector port="80" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />
    <!-- 属性说明
		port:服务器连接器的端口号,该连接器将在指定端口侦听来自客户端的请求。
		enableLookups:如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名;
					若为false则不进行DNS查询,而是返回其ip地址。
		redirectPort:服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号。
		acceptCount:当所有可以使用的处理请求的线程都被用光时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,而返回Connection refused错误。
		connectionTimeout:等待超时的时间数(以毫秒为单位)。
		maxThreads:设定在监听端口的线程的最大数目,这个值也决定了服务器可以同时响应客户请求的最大数目.默认值为200。
		protocol:必须设定为AJP/1.3协议。
		address:如果服务器有两个以上IP地址,该属性可以设定端口监听的IP地址,默认情况下,端口会监听服务器上所有IP地址。
		minProcessors:服务器启动时创建的处理请求的线程数,每个请求由一个线程负责。
		maxProcessors:最多可以创建的处理请求的线程数。
		minSpareThreads:最小备用线程 。
		maxSpareThreads:最大备用线程。
		debug:日志等级。
		disableUploadTimeout:禁用上传超时,主要用于大数据上传时。
    -->


    <Connector port="8009" 
               enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
    <!-- 负责和其他HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时就需要用到这个连接器。 -->
	
    <Engine name="Catalina" defaultHost="localhost">
    <!-- 属性说明
		name:对应$CATALINA_HOME/config/Catalina中的Catalina 
        defaultHost:对应Host元素中的name属性,也就是和$CATALINA_HOME/config/Catalina/localhost中的localhost
		    缺省的处理请求的虚拟主机名,它至少与其中的一个Host元素的name属性值是一样的
        debug:日志等级
    -->

      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>
    <!--
		由Host接口定义.一个Engine元素可以包含多个<Host>元素.
			每个<Host>的元素定义了一个虚拟主机.它包含了一个或多个Web应用.
    -->
    <Host name="localhost" appBase="webapps"
       unpackWARs="true" autoDeploy="true"
       xmlValidation="false" xmlNamespaceAware="false">
	
    <!-- 属性说明
		name:在此例中一直被强调为$CATALINA_HOME/config/Catalina/localhost中的localhost虚拟主机名
		debug:是日志的调试等级 
		appBase:默认的应用路径,也就是把应用放在一个目录下,并在autoDeploy为true的情况下,可自动部署应用此路径相对于$CATALINA_HOME/ (web applications的基本目录)
		unpackWARs:设置为true,在Web应用为*.war是,解压此WAR文件. 
				   如果为true,则tomcat会自动将WAR文件解压;否则不解压,直接从WAR文件中运行应用程序.
		autoDeploy:默认为true,表示如果有新的WEB应用放入appBase 并且Tomcat在运行的情况下,自动载入应用 
    -->

	<Context path="/demm" docBase="E:\\projects\\demm\\WebRoot" debug="0" reloadable="true" > 
        </Context>
    <!-- 属性说明
		path:访问的URI,如:http://localhost/是我的应用的根目录,访问此应用将用:http://localhost/demm进行操作,此元素必须,
			表示此web application的URL的前缀,用来匹配一个Context。请求的URL形式为http://localhost:8080/path/*
        docBase:WEB应用的目录,此目录必须符合Java WEB应用的规范,web application的文件存放路径或者是WAR文件存放路径。
        debug:日志等级 
        reloadable:是否在程序有改动时重新载入,设置成true会影响性能,但可自动载入修改后的文件,
			如果为true,则Tomcat将支持热部署,会自动检测web application的/WEB-INF/lib和/WEB-INF/classes目录的变化,
			自动装载新的JSP和Servlet,我们可以在不重起Tomcat的情况下改变web application
    -->
      </Host>
    </Engine>
  </Service>
</Server>


Tomcat ins config

如何自启动比较 优雅呢

tomcat自启动

CentOS7中设置Tomcat开机自启动 centos7 tomcat自启动


tomat ins wiki ubuntu

tomcat手动部署web项目

tomcat手动部署web

Tomcat部署java web项目,war包方式

tomcat部署web应用的三种方式

tomcat监控

tomcat的manager

tomcat服务器监控工具之probe


shell脚本监控tomcat服务运行状态,服务关闭后进行重启

自动监控apache服务状态并重启的shell脚本

监控Tomcat解决方案(监控应用服务器系列文章)

trouble shooting

Tomcat报错

乱码

这几天测试的兄弟发现了项目中存在乱码问题 经过排查发现是tomcat中的问题 于是在server.xml中添加了如下属性

 catalina.sh set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%  -Dfile.encoding=UTF-8"


启动报栈溢出

Tomcat启动报栈溢出的问题分析及处理

3)、经分析是tomcat为了支持servlet3.0的特性,比如说支持@WebServlet、@WebListener等等,要支持这些特性,tomcat就得去扫描所有的jar包里面的每个类。这个异常表明在扫描jar包的时候,递归调用太深,导致栈溢出了,tomcat给了一个馊主意,让你增大xss,这个还是不好,xss加大了,可用线程数就少了。

4)、程序中有多个包里存在org.bouncycastle.asn1.ASN1Boolean和org.bouncycastle.asn1.DERBoolean类,有bcprov-ext-jdk15on-1.54.jar、bcprov-jdk15on-1.54.jar 、fr-third-7.1.jar

解决办法:
在tomcat的conf/ catalina.properties文件中排除对上述jar包的扫描,即:在conf/ catalina.properties文件中tomcat.util.scan.StandardJarScanFilter.jarsToSkip末尾增加:

bcpkix-*.jar,bcprov-*.jar,fr-*.jar


处理Tomcat日志catalina.out日志文件过大的问题


记录一波由会话堵塞导致tomcat应用故障事件

常见Tomcat无法启动故障

see also

Tomcat服务器集群与负载均衡实现

Apache,nginx,tomcat比较

Linux下Tomcat的安装配置

tomcat之server.xml配置说明,tomcat端口说明

tomcat中server.xml配置详解

Tomcat 的 Server 文件配置详解

在Ubuntu 18.04上安装Tomcat 8.5.31

简单的tomcat+oracle+jsp用例

Appach_Tomcat整合架设


tomcat结合nginx使用小结


nginx整合tomcat服务器


tomcat为何能处理静态资源

轻松玩转Tomcat系列-应用部署


Tomcat 系统架构与设计模式,第 1 部分 工作原理


处理Docker容器化部署Tomcat服务碰到的时区问题