zoukankan      html  css  js  c++  java
  • Tomcat 学习记录

    阅读摘录如下:

    一、本质

      Tomcat最本质就是个能运行JSP/Servlet的Web服务器 , 因此最典型的应用就是用户通过浏览器访问服务器,Tomcat接收到请求后转发给Servlet,由Servlet处理完后,把结果返回给客户端。

      Tomcat是通过ServerSocket监听Socket的方式来接收客户端请求的。

    二、核心类

    Catalina:与开始/关闭shell脚本交互的主类,因此如果要研究启动和关闭的过程,就从这个类开始看起。

    Server:是整个Tomcat组件的容器,包含一个或多个Service。

    Service:Service是包含Connector和Container的集合,Service用适当的Connector接收用户的请求,再发给相应的Container来处理。

    Connector:实现某一协议的连接器,如默认的有实现HTTP、HTTPS、AJP协议的。

    Container:可以理解为处理某类型请求的容器,处理的方式一般为把处理请求的处理器包装为Valve对象,并按一定顺序放入类型为Pipeline的管道里。Container有多种子类型:Engine、Host、Context和Wrapper,这几种子类型Container依次包含,处理不同粒度的请求。另外Container里包含一些基础服务,如Loader、Manager和Realm。

    Engine:Engine包含Host和Context,接到请求后扔给相应的Host在相应的Context里处理。

    Host:就是我们所理解的虚拟主机。

    Context:就是我们所部署的具体Web应用的上下文,每个请求都在是相应的上下文里处理的。

    Wrapper:Wrapper是针对每个Servlet的Container,每个Servlet都有相应的Wrapper来管理。

    可以看出Server、Service、Connector、Container、Engine、Host、Context和Wrapper这些核心组件的作用范围是逐层递减,并逐层包含。

    下面就是些被Container所用的基础组件:

    Loader:是被Container用来载入各种所需的Class。

    Manager:是被Container用来管理Session池。

    Realm:是用来处理安全里授权与认证。

    三、Tomcat部署时 war 和 war exploded 区别

    war模式—-将WEB工程以包的形式上传到服务器

    war exploded模式—-将WEB工程以当前文件夹的位置关系上传到服务器

    四、配置 Tomcat 环境变量

    linux系统:tomcat/bin/setenv.sh

      1 #!/bin/bash
      2 #设置java环境变量
      3 #tomcat启动pid
      4 #export CATALINA_HOME="/usr/tomcat-1"
      5 #export CATALINA_BASE="/usr/tomcat-1"
      6 #add tomcat pid
      7 #CATALINA_PID="$CATALINA_BASE/nip-one.pid"
      8 
      9 JAVA_OPTS='-server -Xms1144m -Xmx1144m -XX:PermSize=1048m -XX:MaxPermSize=1048m'
     10 
     11 if [[ "$JAVA_OPTS" != *-Djava.security.egd=* ]]; then
     12      JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom"
     13 fi

    windows系统:tomcat/bin/setenv.bat

    参考资料

    tomcat组成及工作原理

    Tomcat源码分析

    Tomcat源码分析(一)------ 架构

    tomcat部署多个站点方法

    TOMCAT多站点配置

    用Intellij IDEA调试Tomcat7.0源码

    Javaweb Tomcat 项目部署方式

    Tomcat catalina.bat 原理解析

  • 相关阅读:
    url中特殊字符被转义成编码后处理
    使用axios解决$.ajax不能下载文件问题
    ES6学习-封装一个分页插件
    input输入框延时防抖
    ES6学习-封装tab选项卡
    JS的forEach()map()遍历和jQuery的$.each()$.map()遍历
    JavaScript正则表达式实现批量替换实际案例
    点击页面出现爱心效果
    vue父子组件传值
    Vue——实现简易计算器
  • 原文地址:https://www.cnblogs.com/wangwangfei/p/6207329.html
Copyright © 2011-2022 走看看