美文网首页
tomcat-1-概述

tomcat-1-概述

作者: 宠辱不惊的咸鱼 | 来源:发表于2019-10-02 09:20 被阅读0次

问题

  • APR模式
    • apache portable runtime
    • http://apr.apache.org/docs/apr/1.6/modules.html
    • APR的整体模式还是非阻塞IO,实现的线程模型也是按照NIO的标准模型实现的,APR根据不同操作系统,分别用c重写了大部分IO和系统线程操作模块,这就是为什么APR在不改动代码的情况下能够提升

参考

组成

Server

  • Catalina servlet container(单例)

Service

<Service name="Catalina">
  • 1个或多个Connector + 1个Engine,处理所有Connector获得的请求

Connector

  • Connector在端口上侦听,将获得请求交给Engine处理,从Engine处获得响应返回客户端
  • 有两个典型Connector,一个侦听来自浏览器的Http请求,一个侦听来自其它WebServer的请求
// Coyote Http/1.1 Connector在端口8080处侦听来自浏览器的Http请求
<Conector port="8080" protocol="HTTP/1.1" connectionTimeout="200000" redirectPort="8443" />

// Coyote JK2 Connector在端口8009处侦听来自其它WebServer的Servlet/Jsp代理请求
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Engine

  • Engine下可以配置多个虚拟主机(Virtual Host),每个虚拟主机有一个域名
  • Engine获得一个请求时,将其匹配到某个Host上处理
  • Engine有一个默认虚拟主机,当请求无法匹配到任何一个Host时,将交给默认Host处理
<Engine name="Catalina" defaultHost="localhost">

Host

<Host name="localhost" appBase="webapps" unparkWARs="true" autoDeploy="true">
  • 一个虚拟主机和一个网络域名相匹配
  • 每个虚拟主机下都可以部署一个或多个应用,每个应用对应于一个Context,有一个Context Path
  • Host获得一个请求时,把请求匹配到某个Context上处理
  • 匹配方法是“最长匹配”,path==""的Context是Host的默认Context
// 一个Host下配置多个Host
<Context path="/hello" docBase="D:\workspace\hello" debug="0" privileged="true" />
<Context path="/myapp" docBase="D:\workspace\myapp" workDir="D:\myapp\work" reloadable="true" />

// 创建一个Context文件,conf/Catalina/localhost/hello.xml
<Context path="/hello" docBase="D:\workspace\hello" debug="0" privileged="true" />

Context

  • 一个Context对应于一个Web应用,由一个或多个Servlet组成
  • 配置文件CATALINA_HOME/conf/web.xml +WEBAPP_HOME/WEB-INF/web.xml载入Servlet类
    • conf/web.xml中定义DefaultServlet(/)和JspServlet(.jsp,.jspx)
  • Context收到请求时,在自己的映射表中寻找相匹配的Servlet类,获得响应,并返回

映射例子

http://localhost:8080/wsota/wsota_index.jsp
tomcat-001.jpg
http://www.myserver.com/mywebapp/helloServlet/hello
tomcat-002.jpg
  • HttpServletRequest.getPathInfo()拿到这个path info后,可以做逻辑判断
  • 比如http://www.xxx.com/blog/jjx,假设servelt的映射为/blog/*,那么jjx就是path info
    • 查询用户名为jjx的信息,也就是说要看的是jjx的博客

虚拟主机

基于域名,多个Host节点

http://www.jalja1.org:8080/
http://www.jalja2.org:8080/
  • 局域网:hosts文件
  • 非局域网:DNS

基于端口号,多个Service节点

http://www.jalja1.org:8888/
http://www.jalja1.org:8080/

基于IP,Tomcat不支持

request & response

tomcat-003.jpg tomcat-004.jpg
  • HttpServletRequest由web容器创建,并以方法参数传递给servlet的service方法

HttpServlet

  • J2EE核心基础类,J2EE是一套框架规范,具体实现依赖于各服务器厂商
  • Tomcat属于典型的开源J2EE服务器
  • 源码(Tomcat 8)分javax和org.apache两部分,javax是J2EE规范要求的,org.apache是Tomcat自身的
tomcat-005.jpg tomcat-006.jpg

反向代理

  • 代理服务器接收Internet请求,转发给内部服务器,从内部服务器得到结果返回客户端,对外透明
  • nginx + tomcat,nginx本身不支持动态页面

相关文章

  • tomcat-1-概述

    问题 APR模式apache portable runtimehttp://apr.apache.org/docs...

  • 概述

    Web 基础 HTTP(HyperText Transfer Protocol,超文本传输协议)。 WWW(Wor...

  • 概述

    计算机网络由若干结点和链路组成。网络间可以通过路由器互连起来,构成的网络称为互连网(internet)。inter...

  • 概述

    资源 主页:http://opencv.org文档:http://docs.opencv.org/master/问...

  • 概述

    1、分类 创建型:Singleton,Builder,Prototype,Abstract Factory,Fac...

  • 概述

    2018年7月26日,是我开始记录我和我男朋友的爱情故事的第一天,也是我和他在一起的第99天。 其实我们刚在一...

  • 概述

    电路交换、分组交换 电路交换由于电话通信系统,分组交换用于网络数据传输。 电路交换两个用户独占一条物理链路;分组交...

  • 概述

    课程大纲: 1、图像的基本构成2、像素读写3、图像像素值统计信息4、像素值数学运算5、图像RGB彩色空间6、色彩空...

  • 概述

    作者认为这套需求过程可以适用于多种软件开发的情况。这套需求过程虽然不是唯一的解决方案,但学习这个过程可以获得很多帮...

  • 概述

    1、计算机网络向用户提供的最重要的功能有两个连通性和共享。2、网络由若干结点和连接这些结点的链路组成。结点可以是计...

网友评论

      本文标题:tomcat-1-概述

      本文链接:https://www.haomeiwen.com/subject/fzblpctx.html