Tomcat详解

Tomcat

概述:
   Tomcat在严格意思上并不是一个真正的应用服务器,只是一个可以支持servlet、JSP的web容器
   它扩展了一些应用服务器的功能,如JNDI,数据库连接池,用户事务处理等,是Apache组织下的子项目。
   目前Tomcat被非常广泛的应用于中小规模的Javaweb应用中
   
优点:
  1.容易得到,直接去官网下载
  2.对于开发人员,特别是Java开发人员,Tomcat提供了全部的源代码
  包括servlet引擎,JSP引擎,http服务器,
  3.TOMCAT使用率很高,基本和主流的服务器一起工作

由于Java的跨平台特性,基于Java的Tomcat也具有跨平台性

Tomcat目录:
bin:存放启动和关闭Tomcat脚本
conf:存放不同的配置文件(server.xml和web.xml)
doc:存放Tomcat文档
logs:存放Tomcat执行时的log文件
src:存放Tomcat的源代码
webapps:主要存放web发布的目录(应用程序的示例)
work:存放JSP编译后产出的class文件

server.xml配置文件
server.xml是Tomcat的主配置文件,主要完成两个目标:
   1.提供Tomcat组件的初始配置,说明Tomcat的结构、含义,使得Tomcat通过实例化组件完成启动及构建自身
   2.观察server.xml,可以发现里面包含一些元素:
      1.Server元素:
         Server元素是server.xml文件最高级别的元素,描述一个Tomcat服务器,
         一个Server元素一般会包含logger和ContextManage两个元素
         
         logger:
            logger元素定义一个日志对象
            一个日志对象包含哪些属性:
               1.name:表示这个日志对象的名称
               2.path:表示这个日志对象包含的日志的内容要输出哪一个日志
               3.verbositylevel:表示这个日志文件记录的日志的级别
               
     logger对象是对Java servlet,jsp,tomcat运行期事件的记录

     contextManage:
        contextManage定义了一组contextInterceptors(contextManage事件监听器),requestInterceptors(事件监听器),contexts(web应用程序的上下文目录)和连接器(connectors)的结构和配置
        1.debug:
          表示记录日志记录调试信息的等级
        2.home:
          webapps/conf/logs和context的根目录信息,这个属性的作用是从一个不同的TOMCAT_HOME的目录启动Tomcat
        3.workDir:表示Tomcat的工作目录
        
  注意:
     contextInterceptors和requestInterceptors两者都是监听contextManage的特定事件的拦截器
      contextInterceptors:监听Tomcat的启动和结束事件的信息
      requestInterceptors:监听用户对服务器发出的请求

2.Connector元素:
   Connector(连接器)元素描述了一个到用户的连接,或者直接由Tomcat到用户的浏览器还是通过web服务器
   Tomcat的工作进程和由不同的用户建立的连接来传递读写信息和请求、响应等都是由连接器对象管理
   对连接器对象的配置中应该包含管理类,TCP IP  端口等内容
   
   
3.Context元素:
   每一个Context元素都描述一个Tomcat的web应用程序的目录
   包含的属性:
      1.docBase:
         Context目录
      2.path:
        表示Context在web服务器时的虚拟目录位置和目录名
      3.debug:
         日志记录的调试信息的记录等级
      4.reloadable:
          这个属性可以方便servlet的开发,如果该属性处于打开的状态,tomcat将检查servlet是否被更新而决定自动重新载入
   

配置实例:
   打开Tomcat/conf/server.xml
   
   1.改变Tomcat服务器的端口号:
      需要使用connector元素,connector表示一个到用户的连接,不管是通过web服务器或者直接到用户浏览器(在一个独立的配置中)
      connect偶尔负责管理Tomcat的工作线程和读写连接到不同用户的端口的请求/响应。
      connector的配置包含的信息:
         句柄类,句柄监听的TCP/IP端口、句柄服务器端口的TCP/IP 的backlog
         
         注意:
            修改后必须重启Tomcat服务器
            可以将端口号改成80,需要保证80端口号没有被其他程序占用,另外,也可以同时配置两个端口号,只要产生两个connector的配置信息  

server.xml配置


配置文件中的额基本配置信息:
   server:
       一个服务器元素代表整个cantalina的servlet容器
       1.port:指定一个端口,该端口负责监听关闭Tomcat的请求
       2.shutdown:指定向端口发送命令字符串
       service:
          它由一个或多个连接器(connector)组成,以及Engine,负责处理所有的connector所获得的客户请求
             1.name:指定service名称
             
         Connector(表示客户端和service之间的连接):
              一个Connector将在某个指定端口上监听客户的请求,并将获得的请求交给Engine来处理,从Engine获得相应的结果并返回给客户
       
  Tomcat有两个典型的Connector
    1.直接监听来自browser的http请求
    2.监听来自其他的webService的请求
    
注意:
   coyote  http/1.1  Connector在端口8080处监听客户来自browser的http请求
   coyote  jk1.3   Connector在端口8009处监听来自其他的webServer(Apache)的servlet/jsp的代理请求
   
   
   1.port:指定服务器端需要创建的端口号,并可以在这个端口监听来自客户端的请求
   2.minProcessors:为服务器启动时创建处理请求的线程数(最小)
   3.MaxProcessors:最大可以创建处理请求的线程数
   4.enableLookUps:
       如果为true
      则可以通过调用request.getRemoteHost();进行DNS查询来得到远程客户端的实际的主机名
       如果为false:
          则不进行DNS查找,返回IP地址
    5.redirectport:
       指定服务器正在处理http请求时收到一SSL传输请求后重定向的端口号
       
    6.acceptCount:
       指定当所有可以使用的处理请求的线程数,如果线程数都被使用,可以放到处理队列中的请求数,超过了这个请求数,就不予以处理
       
    7.connectionTimeOut:
       表示超时的时间数(一般以毫秒为单位)

Engine


概述:
   Engine下可以配置多个虚拟机主机,每一个虚拟主机都有一个域名,当Engine获得一个请求时,它把该请求匹配到某个host上,然后交由host来处理
   
Engine有一个默认的虚拟主机:
   当请求无法匹配到任何一个host上的时候,将交给默认的host来处理(表示指定service中 的请求处理机,接受和处理来自connector的请求):
      1.defaultHost:指定缺省的处理请求的主机名,它至少和其中一个host元素的name属性值相同
      
   Context(表示一个web 应用程序):
      1.docBase:表示程序的路径或者是WAR文件存放的路径
      2.path:表示web应用程序的前缀,如:请求URL:http://localhost:8080/path/...
      3.reloadable:
         如果为true:
            则Tomcat会自动检测应用程序的/WEB—_INF/lib和/WEB—_INF/classes目录的变化,自动加载新的应用程序,不需要重启Tomcat
      

host


定义:host表示一个虚拟主机:每个虚拟主机好某个网络域名(Domain name)相匹配
每一个虚拟主机下都可以部署一个或多个web app ,每一个webapp对应一个Context,Context path,
当host获得一个请求时,将把该请求匹配到某个context上,然后交由context处理,
  匹配的方法:最长匹配
  注意:
     path=""的context将成为该host的默认的context。所有无法和其他Context的路径名匹配的请求,都将最终和该默认的Context进行匹配。
     
     1.name :表示指定的主机名
     2.aooBase:表示应用程序的基本目录,即存放该应用程序的目录
     3.unpackWARs:
         如果为true:
            则Tomcat会自动将WAR文件解压,反之不解压,直接从WAR文件中运行应用程序

Logger


logger :表示日志,调试和错误信息
  1、className:指定logger使用的类名,此类必须实现org.apache.catalina.logger接口
  2.prefix:指定logger文件的前缀
  3.suffix:指定logger文件的后缀
  4.timeStamp:
     如果为true:表示在log文件名中加入时间(系统时间)
     如:localhost_log.2017-07-12.txt
  

valve(功能和logger差不多)
  其中prefix和suffix属性解释和logger一样
   不同:
      1.classname:表示指定valve的使用类名,
        如:
          org.apche.catalina.valve.accessLogValne类可以记录应用程序的访问信息
    
directory:表示log文件存放的位置
pattern:common方式记录远程主机名,IP地址、用户名、日期、http响应代码、发送的字节数。

Realm


Realm:表示存放用户名、密码、role的数据库
   1.className:表示realm的使用类名,此类必须实现 org.apche.catalina.realm接口

Tomcat管理


1.用户管理:
在进行具体的Tomcat管理之前,可以先给Tomcat添加用户,使这个用户有权限进行管理
<user name="user" password="user" roles="standard,manager"/>,重启Tomcat
在浏览器里输入http://localhost:8080/manager,会弹出一个对话框,输入上面定义的用户名和密码

2.应用程序管理:
  http://localhost:8080/manager/list,
   浏览器会显示基本信息:应用程序的路径,当前的饿状态,连接程序的session数
   
3.重新加载应用程序
  在浏览器输入http://localhost:8080/manager/reload?path=/exmples,
  浏览器会显示该exmples是否加载成功
  或者:
     将server.xml的context元素的reloadable属性设置为true,则会自动加载
  
  4.显示session的信息
    http://localhost:8080/manager/session?path=/exmples,
  5.启动和关闭应用程序
   http://localhost:8080/manager/start?path=/exmples,//启动
   http://localhost:8080/manager/stop?path=/exmples,//关闭
  
  

假设来自客户端的请求:http://localhost:8080/abc/abc_index.jsp

1.请求被发送到本机端口8080,被在那里监听的coyote  HTTP/1.1  Connector获得
2.Connector把该请求交给它所在的service的Engine来处理,并等待来自Engine的回应
3.Engine获得localhost:8080/abc/abc_index.jsp,匹配它所有的虚拟主机host
4.如果Engine匹配带名字为localhost的host(即使匹配不到也可以交给host处理,被Engine的默认主机处理)
5.localhost的host获得请求/abc/abc_index.jsp,匹配它所有的Context
6.host匹配到路径为/abc的Context
7.path=“/abc”的Context获得请求/abc_index.jsp,在它的mapping table中寻找对应servlet 
8.Context匹配到URL PATTERN为*.jsp  的servlet,对应于JSPServlet类
9.构造HttpServletRequest对象和HttpServletResponse对象作为参数调用JSPServlet的doget或者doPost方法
10.Context把执行完的HttpServletResponse对象返回给host
11.host把HttpServletResponse对象返回给Engine
12.Engine在把HttpServletResponse对象在返回给Connector
13.Connector把HttpServletResponse对象返回给客户浏览器
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值