Tomcat详解

一、Tomcat是什么?

  tomcat服务器是一种Servlet/jsp容器,更实质性的说是Servlet容器,因为jsp最终还是被编译成servlet来执行的。而对于servlet来说,其最长见的用途是扩展java web服务器功能,为来自web客户的请求提供服务。

  它完全运行在java虚拟机上。由于它的运行在服务器端,因此他的运行不依赖于浏览器。

  tomcat作为servlet容器,负责处理客户请求,把请求传给servlet并把结果返回给客户。servlet容器与servlet之间的接口是由java servlet api定义的,在此api中定义了servlet的各种方法,这些方法在servlet生命周期的不同阶段被servlet容器调用,servlet api还定义了servlet容器传递给servlet的对象类,如请求对象ServletRequest和响应对象ServletResponse 。

  tomcat服务器是由一系列可配置的组件构成,其中核心组件是Catalina Servlet容器,它是所有其他tomcat组件的顶层容器。

 

  tomcat的组件可以在conf/server.xml文件当中进行配置,每个tomcat组件在server.xml文件中进行配置,每个tomcat组件在server.xml文件中对应一种配置元素。具体见下:

  

  1.顶层类元素:

    < Server>和< Service>,他们位于整个配置文件的顶层。

    < Server>元素代表整个Catalina Servlet容器,它是tomcat实例的顶层元素。< Server>元素当中可包含一个或多个< service>元素。

    < Service>元素中包含一个< Engine>元素,以及一个或多个< Connector>元素,这些< Connector>元素共享同一个< Engine>元素

  2.连接器类元素:

    connector,它代表了介于客户与服务器之间的通信接口,负责将客户的请求发送给服务器,并将服务器的相应结果传递给客户。

  3.容器类元素

    < Engine>,< Host>和< context>.

    < Engine>组件处理在同一个< service>中所有< Connector>元素接受到的客户请求

    < Host>组件为特定的虚拟机处理所有客户请求。每个< Host>元素定义了一个虚拟主机,它可以包含一个或多个web应用。

    < context>组件为特定的web应用处理所有客户请求。它是使用最频繁的元素。每个< Context>元素代表了运行在虚拟机上的单个web应用,一个< Host>元素中可以包含多个< context>元素。

    说到< context>元素,java web应用的主要特征之一就是它与Context的关系,每个web应用有唯一的Context。当java web应用运行时,Servlet容器为每个web应用创建唯一的ServletContext对象,它被整个web应中所有的组件共享。

       如下代码:

  

  

    你可以自己在server.xml当中定义一个context元素,设定你所存在项目的参数及属性。其中:

    path指定访问web应用的url入口

      docBase指定web应用的文件路径,可以给定绝对路径,也可以给定向对于host的appBase属性的相对路径

      reloadable,如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新,服务器会自动重新加载web应用。

   4.tomcat的运行脚本

    如果仔细研究一下tomcat的启动和关闭脚本,会发现startup.bat和shutdown.bat都执行同一个目录下的catalina.bat脚本。

    其实质是这样的:执行startup.bat脚本,相当于执行了catalina start命令,执行shutdown.bat相当于执行了catalina stop命令。

      commonlib,serverlib,sharedlib具体用法:

     其中 serverlib下的 jar 文件只能被 tomcat 服务器访问。

     sharedlib下的jar文件可以被所有的web应用访问,但不能被tomcat服务器访问。

    commonlib目录下的jar文件可以被tomcat服务器和所有的web应用访问。

  由于session值之前没有设置,以至于刚登录的网站,不到一分钟就超时了,总结了一下,原来是session过期的原因,以下是设置session时间的3个方法:

   1. 在 tomcat——>conf——>servler.xml 文件中定义:

   

   2. 在 web.xml 中定义:

   

  3. 在程序中定义:

   session.setMaxInactiveInterval(30*60);

  设置单位为秒,设置为 -1 永不过期

 Tomcat全局日志配置介绍

   如果我们在production环境中有许多web application,一般来说我们都是每个 application 会有一个自己的 log 配置,这样的话,可能就会有很多个 log4j.properties. 而且 production 和 development 环境下的 log4j.properties 又不一样,

这样的话我们就需要维护很多个 log4j 配置文件。在 jboss 中我们一般可以修改 conf/log4j.xml 来配置所有 web应用的log. 但是tomcat默认是不支持log4j的。但是对tomcat进行一些配置之后的话就可以实现跟 jboss 中一样的效果。

  Tomcat5.x中Tomcat全局日志配置的实现:

  1.把你写好的 log4j.properties(或者log4j.xml)移到 $CATALINA_HOME/common/classes 中。

  2. 拷贝一份最新的 log4j lib 到 $CATALINA_HOME/common/lib 中。

  3. 拷贝一份最新的 commons log(commons-logging-x.y.z.jar 而不是 commons-logging-api-x.y.z.jar)到 $CATALINA_HOME/common/lib 中。

  4. remove掉你web application中所有的log4j.xml文件和初始话log4j的代码(如果有的话)。

  5. OK. restart tomcat. 

 《Tomcat中全局性的日志配置》。

 

 

 

 

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/veggiegfei/p/8474292.html