• 【Service】【Web】【Middleware】Tomcat


    1. 概念

    1.1. 官方网站:tomcat.apache.org

    1.2. tomcat的组件

    <Server>

      <Service>

        <Connector/>

        <Connector/>

        <Engine>

          <Host>

            <Context/>

          </Host>

          <Host>

          </Host>

        </Engine>

      </Service>

    </Server>

      每个组件都由“类”实现:

        此些组件可分为如下几类:

          顶级组件:Server

          服务组件:Service

          连接器组件:http,https,ajp

          容器类:Engine,Host,Context

          被嵌套类组件:value,logger,realm,loader,manager

          集群类组件:listener

    2. 安装:

    2.1. JDK

    2.2. Tomcat:

      系统自带的rpm包

        tomcat

        tomcat-lib

        tomcat-admin-web

        tomcat-web-apps

      使用官方的二进制编译包

        tar xf apache-tomcat-VERSION.tar.gz -C /usr/local

        cd /usr/local

        ln -sv apache-tomcat-VERSION tomcat

        /etc/profile.d/tomcat.sh

          CATALINA_BASE=/usr/local/tomcat

          PATH=$CATALINA_BASE/bin:$PATH

          export CATALINA_BASE PATH

        tomcat的目录结构:

          bin:脚本,及启动时用到的类;

    3. 配置文件

      server.xml:主配置文件;

      context.xml:每个webapp都可以有专用的配置文件,这些配置文件通常位于webapp应用程序自己的目录下的WEB-INF目录中;此context.xml为每个webapp提供默认配置

      web.xml:每个webapp只有在"部署"后才能被访问,这些配置文件通常位于webapp应用程序自己的目录下的WEB-INF目录中;此文件则用于为各webapps定义默认的部署方式

      tomcat-user.xml:用户认证的账号和密码文件;

      catalina.policy:当使用-security选项来启动tomcat实例时,会取此配置文件来实现基于安全策略的运行方式;

      catalina.properties:java属性的定义文件,用于设定类加载器路径,以及一些与jvm调优相关的参数等;

      logging.propeties:日志系统相关的配置

    4. JSP WebAPP组织结构:

      /:webapps的根目录:

        index.jsp:主页;

        WEB-INF/:当前webapp的私资源的目录,通常存放当前webapp自用的context.xml;

        META-INF/:当前webapp的私资源的目录,通常存放当前webapp自用的context.xml

        classes/:类文件,当前webapp的私有类;

        lib/:当前webapp的私有类,被打包成jar格式;

      web归档格式:

        war:webapp

        jar:EJB的类打包文件

        rar:资源适配器打包文件

        ear:企业级webapp

      JSP --> jasper --> servlet(PAGE_jsp.java) --> complier -->bytecode(PAGE_jsp.class) --> JVM

    5. 手动添加一个测试应用程序

      创建webapp特有的目录结构;

        mkdir -pv myapp/{classes.lib, WEB-INF,META-INF}

      提供webapp的测试页面;

        myapp/index.jsp

    <%@ page language="java" %>
    <%@ page import="java.util.*" %>
    <html>
            <head>
                    <title>JSP Test Page</title>
            </head>
            <body>
                    <% out.println("hello world"); %>
            </body>
    </html>
    View Code

    6. 部署(deploy)webapp的相关操作;

      deploy:将webapp的源文件放置于目标目录、配置tomcat服务器能够基于context.xml文件中定义的路径来访问此webapp;将其特有的类通过class loader装载至tomcat;

        自动部署:auto deploy

        手动部署:

          冷部署:把webapp复制到指定位置,而后才启动tomcat;

          热部署:在不停止tomcat的前提下进行的部署;

            部署工具:manager app、ant脚本、tcd(Tomcat Client Deployer)等等;

      undeploy:反部署,停止webapp,并从tomcat实例上拆除其部署文件和部署名;

      stop:停止,不再向用户提供服务;

      start:启动处于“停止”状态的webapp;

      redeploy:重新部署;

    7. Tomcat自带的应用程序;

      manager app:webapp管理工具;

      host manager:VHosts管理工具;

    8. Tomcat的常用组件:

      每个组件几乎都是通过特有的类来实现,而且有的组件还不止一种实现方式;

      Server:tomcat实例,即运行一个jvm进程;监听于8005端口接收“SHUTDOWN”,各“server监听的端口不能相同”;因此,一个物理主机上启动多个server实例应该使用不同的端口;

      Service:用于实现将一个或多个connector关联至一个engine;

      connector组件:

        进入tomcat的请求可分为两类:

          tomcat自己作为独立的应用程序服务器:standalone,此时,请求将来自于浏览;

          tomcat作为应用服务器:请求将来自于前面反向代理服务器;

            httpd:http,https,ajp

            nginx:http,https

        属性:

          address:监听的IP地址;

          maxThreads:最大并发连接数,默认为150;

          port:监听的端口;

          protocal:连接器使用的协议,一般为HTTP/1.1或AJP/1.3;

          redirectPort:如果有https请求,则转发至此端口;

          connectionTimeout:连接的超时时长,单位为毫秒,默认为60000;

          enableLookups:是否通过DNS进行查询,一般不会打开

          acceptCount:定义等待队列的长度;

          scheme:定义请求协议的类型

          debug:调试功能

          secure:开启安全功能

          clientAuth:是否验证客户端证书

          sslProtocal:SSL协议的版本,建议使用TLS

      Engine:Servlet的一个实例,即servlet引擎,其内部可以有一个或多个Host组件来定义;通常需要通过defaulHost的属性定义默认虚拟主机

        属性:

          name=

          defaultHost=

          jvmRoute=

      Host组件:位于Engine容器中用于接收请求并进行相应处理的主机或虚拟主机,如前面实例中的定义;

    <Host name="localhost" appBase="webapps"
    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
    </Host>
    View Code

        属性:

          appBase:此Host的webapps目录,即存放非归档的web应用程序的目录或归档后的WAR文件的目录路径;可以使用基于$CATALINA_HOME的相对路径;

          autoDeploy:在Tomcat处于运行状态时放置于appBase目录中的应用程序文件是否自动进行deploy,默认为true;

          unpackWars:在启用此webapps时是否对WAR格式的归档文件先进行展开;默认为true;

    <Engine name="Catalina" defaultHost="localhost">
      <Host name="localhost" appBase="webapps">
        <Context path="" docBase="ROOT"/>
        <Context path="/bbs" docBase="/web/bss"
          reloadable="true" crossContext="true"/>
      </Host>
      
      <Host name="mail.magedu.com" appBase="/web/mail">
        <Context path="/" docBase="ROOT"/>
      </Host>
    </Engine>
    View Code
  • 相关阅读:
    20145209刘一阳《JAVA程序设计》课堂测试总结
    20145209刘一阳《JAVA程序设计》第一周课堂测试
    20145209刘一阳《JAVA程序设计》第十五周补充测试
    20145209刘一阳《JAVA程序设计》第九周课堂测试
    20145209刘一阳《JAVA程序设计》第八周课堂测试
    20145209刘一阳《JAVA程序设计》第七周课堂测试
    20145209刘一阳《JAVA程序设计》第五周课堂测试
    20145209刘一阳《JAVA程序设计》第四周课堂测试
    20145209刘一阳《JAVA程序设计》第三周课堂测试
    2019-2020-2 20175322周弋鸿 《网络对抗技术》Exp9 Web安全基础
  • 原文地址:https://www.cnblogs.com/demonzk/p/7460332.html
Copyright © 2020-2023  润新知