设为首页 收藏本站
查看: 722|回复: 0

[经验分享] Java 技术体系及Tomcat结构

[复制链接]

尚未签到

发表于 2018-11-29 12:43:35 | 显示全部楼层 |阅读模式
Java 技术体系及Tomcat结构

  ===============================================================================
  概述:
   本章将主要介绍Java技术体系基础和Tomcat的结构,具体内容如下:

  •   编程语言的分类程序的分类;
  •   Java简介
        ·java的发展历程;
        ·JDK,JRE,JVM的区别和联系;
  •   Java代码的运行和技术体系;
  •   Java的安装
       ·Opean JDK;
       ·Orecal JDK;

  •   Java 2 EE
       ·Servlet类库;
        ·Jsp类库;
        ·Tomcat的出现
  •   Tomcat的执行过程;
  •   Tomcat的运行和环境部署;
  •   Tomcat的核心组件

  ===============================================================================
  
编程语言:

百度百科解释

  • 编程语言俗称“计算机语言”,种类非常的多,总的来说可以分成机器语言、汇编语言、高级语言三大类。电脑每做的一次动作,一个步骤,都是按照已经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。 目前通用的编程语言有两种形式:汇编语言高级语言
【级别分类】
硬件级:微码编程,汇编语言
系统级:C,C++,...(编译型语言)
应用级:Java, PHP, Python, Ruby, Perl, C#, ...

  • Python:PVM(代码运行环境)
         Standard Library (标准库):Web Framework(如:Django, Flask, ...)
  • Java:JVM(运行环境),JDK(开发环境)
  • bash:bash explainer(解释器)
     ...
【程序】:指令+数据
过程式编程:以指令为中心,数据服务于代码;
对象式编程以数据为中心,指令服务于数据;

  • 类,class;类属性、类方法;
  • 对象,方法(method)
Java:
1.简介

百度百科解释

  • Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程;
  • Java具有简单性、面向对象、分布式健壮性安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等
发展历程:
http://s2.运维网.com/wyfs02/M01/8B/61/wKioL1hL9EKxYrNKAACJeYz4zLI772.png
  
2.JDK,JRE,JVM的关系与区别

JDK:

  • JDK(Java Development Kit) 是Java语言的软件开发工具包(SDK)。
  • JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API )。
有三种版本

  • SE(J2SE),standard edition,标准版
  • EE(J2EE),enterprise edition,企业版
  • ME(J2ME)micro edition,主要用于移动设备、嵌入式设备上的java应用程序
JRE

  • 运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。
  • JRE为Java Runtime Environment的简称,JRE(包括Java Plug-in)是Sun的产品,包括两部分:Java Runtime Environment和Java Plug-in。
  • JRE 是可以在其上运行、测试和传输应用程序的Java平台;
  • JRE需要辅助软件--Java Plug-in--以便在浏览器中运行applet(小程序)。
  • 没有JDK的话,无法编译Java程序,但在有JRE环境的系统上可以运行程序。所以当你只需要运行Java程序或Applet,下载并安装JRE即可。如果你要自行开发 Java软件,请下载JDK。
JVM

  • JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
  • Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。
附图:
http://s5.运维网.com/wyfs02/M02/8B/61/wKioL1hMCEPAicEbAADHlj8pGtA165.png
附图:
http://s5.运维网.com/wyfs02/M00/8B/65/wKioL1hNSdXwDK0gAACtqOz6aiQ101.png
    3.Java代码的运行及技术体系

Java代码的运行
*.java(source code) 源代码--> javac --> *.class(bytecode) 类文件(字节码)
jvm:

  • class loader(类加载器),加载程序的类文件及依赖到的其它的类文件至执行引擎运行; 整个运行表现为一个jvm进程;
jvm  thread;
过程:

  • 利用JDK(调用JAVA API)开发JAVA程序后,通过JDK中的编译程序(javac)将文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。
Java技术体系:


  • Java编程语言
  • Java Class 文件格式
  • Java API:Java编程语言中拥有的类库
  • Java VM:
JVM的核心组件:


  • class loader
  • 执行引擎
JVM运行时区域:

  • 方法区:线程; 用于存储被JVM加载的class信息、常量、静态变量、方法等;
  • 堆:是jvm所管理的内存中占用空间最大的一部分;也是GC管理的主要区域;存储对象;
  • Java栈:线程私有,存储 线程自己的局部变量;
  • PC寄存器(程序计数器):线程私有的内存空间,程序的指令指针;
  • 本地方法栈:
附图:
http://s4.运维网.com/wyfs02/M02/8B/65/wKioL1hNSULxSZWnAAEgRvd3Uyc754.jpg
  
4.总结:

Java 2 SE:JDK
Java 2 EE:JDK + Servlet, JSP, EJB, JMS, JMX, JavaMail, ...(企业及类库)
商业实现:

  • BEA(oracle):WebLogic
  • IBM:WebSphere
  • Oracle:oc4j
    ...
  
Java安装

了解当前的java环境:

  • ~]# java  -version
OpenJDK 相关程序包
java-VERSION-openjdk:

  • The OpenJDK runtime environment.
java-VERSION-openjdk-headless:

  • The OpenJDK runtime environment without audio and video support.

java-VERSION-openjdk-devel:

  • The OpenJDK development tools.
注意:

  • 多版本并存时,可使用 alternatives命令设定默认使用的版本;
Oracle JDK:
安装相应版本的rpm包;

  • jdk-VERSION-OS-ARCH.rpm   例如:jdk-1.8.0_25-linux-x64.rpm
注意:
安装完成后,要配置JAVA_HOME环境变量,指向java的安装路径;
◆OpenJDK:

  • JAVA_HOME=/usr
Oracle JDK:

  • JAVA_HOME=/usr/java/jdk_VERSION
  • export PATH=$JAVA_HOME/bin:$PATH
  演示1:Oracle JDK:
   1.下载Orecal官方JDK程序包并安装
[root@centos7 JDK]# ls
jdk-7u79-linux-x64.rpm  jdk-8u25-linux-x64.rpm   # 下载的程序包
# 安装1.8版本第25次升级的程序包
[root@centos7 JDK]# rpm -ivh jdk-8u25-linux-x64.rpm   
Preparing...                          ################################# [100%]
Updating / installing...
   1:jdk1.8.0_25-2000:1.8.0_25-fcs    ################################# [100%]
Unpacking JAR files...
rt.jar...
jsse.jar...
charsets.jar...
tools.jar...
localedata.jar...
jfxrt.jar...   2.安装后生成的目录在/usr/java中;
[root@centos7 JDK]# cd
[root@centos7 ~]# cd /usr/
[root@centos7 usr]# ls
bin  etc  games  i686-w64-mingw32  include  java  lib  lib64  libexec  local  sbin  share  src  tmp  x86_64-w64-mingw32
[root@centos7 usr]# cd java/
[root@centos7 java]# ll
total 4
lrwxrwxrwx 1 root root   16 Dec 11 21:04 default -> /usr/java/latest
drwxr-xr-x 9 root root 4096 Dec 11 21:04 jdk1.8.0_25
lrwxrwxrwx 1 root root   21 Dec 11 21:04 latest -> /usr/java/jdk1.8.0_25  # 执向的是最新版
[root@centos7 java]# cd latest/
[root@centos7 latest]# ll
total 25784
drwxr-xr-x 2 root root     4096 Dec 11 21:03 bin       # 二进制程序
-rw-r--r-- 1 root root     3244 Sep 18  2014 COPYRIGHT
drwxr-xr-x 4 root root      115 Dec 11 21:03 db
drwxr-xr-x 3 root root      125 Dec 11 21:03 include   # 头文件
-rw-r--r-- 1 root root  5025522 Sep 17  2014 javafx-src.zip
drwxr-xr-x 5 root root     4096 Dec 11 21:03 jre       # 运行环境
drwxr-xr-x 5 root root     4096 Dec 11 21:04 lib
-rw-r--r-- 1 root root       40 Sep 18  2014 LICENSE
drwxr-xr-x 4 root root       44 Dec 11 21:04 man      
-rw-r--r-- 1 root root      159 Sep 18  2014 README.html
-rw-r--r-- 1 root root      525 Sep 18  2014 release
-rw-r--r-- 1 root root 21057306 Sep 18  2014 src.zip
-rw-r--r-- 1 root root   110114 Sep 17  2014 THIRDPARTYLICENSEREADME-JAVAFX.txt
-rw-r--r-- 1 root root   178400 Sep 18  2014 THIRDPARTYLICENSEREADME.txt
[root@centos7 latest]# ll jre
total 308
drwxr-xr-x  2 root root   4096 Dec 11 21:03 bin
-rw-r--r--  1 root root   3244 Sep 18  2014 COPYRIGHT
drwxr-xr-x 15 root root   4096 Dec 11 21:04 lib
-rw-r--r--  1 root root     40 Sep 18  2014 LICENSE
drwxr-xr-x  3 root root     20 Dec 11 21:03 plugin # 插件
-rw-r--r--  1 root root     46 Sep 18  2014 README
-rw-r--r--  1 root root 110114 Sep 17  2014 THIRDPARTYLICENSEREADME-JAVAFX.txt
-rw-r--r--  1 root root 178400 Sep 18  2014 THIRDPARTYLICENSEREADME.txt
-rw-r--r--  1 root root    955 Sep 18  2014 Welcome.html
[root@centos7 latest]# ls bin
appletviewer  jar        javadoc         javapackager  jconsole  jhat   jmc         jsadebugd  jvisualvm     pack200     rmiregistry  tnameserv  xjc
ControlPanel  jarsigner  javafxpackager  java-rmi.cgi  jcontrol  jinfo  jmc.ini     jstack     keytool       policytool  schemagen    unpack200
extcheck      java  # 主要的程序文件     javah           javaws        jdb       jjs    jps         jstat      native2ascii  rmic        serialver    wsgen
idlj          javac # 编译器     javap           jcmd          jdeps     jmap   jrunscript  jstatd     orbd          rmid        servertool   wsimport   3.安装完成后,要配置JAVA_HOME环境变量,指向java的安装路径;
# 没有配置环境变量前运行版本号
[root@centos7 latest]# bin/java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
[root@centos7 latest]# vim /etc/profile.d/java.sh # 配置环境变量
export JAVA_HOME=/usr/java/latest
export PATH=$JAVA_HOME/bin:$PATH
[root@centos7 ~]# . /etc/profile.d/java.sh  # 重读脚本文件
[root@centos7 ~]# java -version             # 直接运行java命令即可
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)  

  
  演示2:OpenJDK
   1.安装及查看程序看路径
[root@centos7 ~]# yum install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64 java-1.8.0-openjdk-headless.x86_64   -y
[root@centos7 ~]# rpm -ql java-1.8.0-openjdk
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre/bin/policytool
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre/lib/amd64/libawt_xawt.so
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre/lib/amd64/libjawt.so
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre/lib/amd64/libjsoundalsa.so
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre/lib/amd64/libsplashscreen.so
/usr/share/applications/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64-policytool.desktop
/usr/share/icons/hicolor/16x16/apps/java-1.8.0.png
/usr/share/icons/hicolor/24x24/apps/java-1.8.0.png
/usr/share/icons/hicolor/32x32/apps/java-1.8.0.png
/usr/share/icons/hicolor/48x48/apps/java-1.8.0.png
# 可使用 alternatives命令设定默认使用的版本
[root@centos7 ~]# ll /etc/alternatives/java
lrwxrwxrwx 1 root root 70 Dec 11 21:44 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre/bin/java
# 列出程序指向的路径
[root@centos7 ~]# alternatives --list
libnssckbi.so.x86_64auto/usr/lib64/pkcs11/p11-kit-trust.so
ldauto/usr/bin/ld.bfd
printauto/usr/bin/lpr.cups
xinputrcauto/etc/X11/xinit/xinput.d/ibus.conf
mysqlbugauto/usr/lib64/mysql/mysqlbug
cifs-idmap-pluginauto/usr/lib64/cifs-utils/cifs_idmap_sss.so
akonadiserverrcauto/etc/xdg/akonadi/akonadiserverrc.mysql
mtaauto/usr/sbin/sendmail.postfix
libwbclient.so.0.12-64auto/usr/lib64/samba/wbclient/libwbclient.so.0.12
zabbix-proxyauto/usr/sbin/zabbix_proxy_mysql
javaauto/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre/bin/java
jre_openjdkauto/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre
jre_1.8.0auto/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre
jre_1.8.0_openjdkauto/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
javacauto/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/bin/javac
java_sdk_openjdkauto/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
java_sdk_1.8.0auto/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
java_sdk_1.8.0_openjdkauto/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
[root@centos7 ~]# ls -l /bin/java
lrwxrwxrwx 1 root root 22 Dec 11 21:44 /bin/java -> /etc/alternatives/java # 始终指向的是真实路径
[root@centos7 ~]# java -version  # 可以直接使用java命令
openjdk version "1.8.0_65"
OpenJDK Runtime Environment (build 1.8.0_65-b17)
OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)   2.声明JAVA_HOME,不需要声明环境变量,因为已经在bin环境下了

[root@centos7 ~]# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr
[root@centos7 ~]# . /etc/profile.d/java.sh  
Java 2 EE:

CGI:通用网关接口

  • 任何一种编程语言,只要能够兼容CGI规范,都可以做为httpd的后端动态网站的执行引擎,无论是C,Java,php,Python,pear等都是通过这种方式来运行的;
  • httpd能够自己基于CGI的规范,向后端的应用程序的执行环境代码发起请求,代码在运行环境中执行运行之后把结果封装成响应报文响应给客户端。

Servlet

  • Servlet(Server Applet),全称Java Servlet是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。
  • Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。servlet兼容CGI规范,能接受http请求;
  • 服务器上需要一些程序,常常是根据用户输入访问数据库的程序。这些通常是使用公共网关接口Common Gateway Interface,CGI)应用程序完成的。然而,在服务器上运行 Java,这种程序可使用 Java 编程语言实现。在通信量大的服务器上,JavaServlet 的优点在于它们的执行速度更快于 CGI 程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。
JSP: Java Server Page


  • JSP全名为Java Server Pages,中文名叫 java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态页面技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
  • 它实现了Html语法中的java扩展(以 形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
  • Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。
JSP执行过程

http://s3.运维网.com/wyfs02/M01/8B/6A/wKiom1hNcaSTiyefAACZBQsl780118.png
http://s4.运维网.com/wyfs02/M02/8C/2F/wKioL1hkzQqgf8G1AAA7MxpHmIQ591.png
Web Container(容器):

  • Servlet container(Servlet+JDK)
  • JSP
Tomcat初现:

  • Java Web Server:JWS
  • ASF:JServ
      Tomcat 3.x
      Tomcat 4.x:Catalina(代码名称)
商业实现:

  • WebSphere, WebLogic, Oc4j, Glassfish, Geronimo, JOnAS, JBoss, ...
开源实现:

  • Tomcat, Jetty, Resin, ...
Tomcat:

  • 为Java 2 EE技术体系的不完整实现;(只是构建实现了servlet 和 jsp类库 )

  
Tomcat:
1.简介

百度百科:

  • Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由ApacheSun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
  • Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
  • 诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为9.0。

Tomcat的执行过程及应用环境

  • Tomcat因为是由Java语言编写的,所以要想运行Tomcat首先要转备好一个JDK环境,然后在JDK之上再部署Tomcat(为JDK提供了Servlet和Jsp类库),除此之外Tomcat还自带了一个类库,可以使其监听在8080端口,所以Tomcat又是一个Web服务器。它同httpd一样可以解析http请求,并根据用户的请求加载文件之后响应给客户端;
  • 如果请求的为一个静态文件,因为Tomcat是一个使用Java语言编写的web服务器,所以可以直接在磁盘上加载资源响应给客户端;如果为一个动态资源(JSP),则会加载资源到JDK环境中(Tomcat),先由jasper转换成Servlet,然后由Servlet提请运行在JVM虚拟机上,最后把运行的结果通过Web服务器响应给客户端请求;所以,Tomcat就是一个支持动静资源响应的完整的Web服务器。
  • 当并发请求较低时,Tomcat可以直接响应;但如果当并发请求过大时,为了保证Tomcat的运行,可以在前端可以部署一个http请求的反代组件(如:HAproxy,nginx),实现动静分离。即所有的动态资源请求发给后端的多个Tomcat实例,所有的静态请求发给后端的httpd或者nginx服务器集群。但是Tomcat通常不直接面向前端(客户端)请求,而是在Tomcat前端再使用一个httpd反代,即前端的会话请求由http接受,而Tomcat只接受反代过来的请求(动),如果需要提供数据存储的话后端还需要MySQL,如此一来整个环境就是一个lnamt环境;
  • 因为Tomcat是由Java语言编写的,同时,并没有依赖特权资源,所以,在运行Tomcat时最好不要用管理员的账户运行;Tomcat默认监听的端口为8080而非80端口,这也是为什么在Tomcat的前端要添加一个httpd反代的原因。即:为了程序执行安全,一般使用普通用户(Tomcat)来运行Tomcat,这样一来,Tomcat就无法监听在80端口之上了,要想基于80端口接受前端的调度请求或者客户端请求,就要使用一个httpd的反代组件。
  
2.Tomcat的核心组件

Tomcat的核心组件:server.xml
http://s2.运维网.com/wyfs02/M01/8B/A6/wKiom1hTlleiSj5tAAAwuoOhBfY112.png
每一个组件都由一个Java“类”实现,这些组件大体可分为以下几个类型:

  • 顶级组件:  Server
  • 服务类组件:Service
  • 连接器组件:http, https, ajp
  • 容器类:    Engine, Host, Context
  • 被嵌套类:  valve, logger, realm, loader, manager, ...
  • 集群类组件:listener, cluster, ...

Server

  • 代表整个servlet 容器
Service

  • 它由一个或者多个Connector组成,以及一个Engine,负责处理所有Connector所获得的客户请求。
Connector

  • 一个Connector将在某个指定的端口上监听客户请求,并且将获得的请求交给Engine来处理,从Engine获得获得回应并且返回给客户。Tomcat有一个典型的Connector,一个直接监听来自browser的http请求,一个监听来自其他WebServer的请求。比如8080端口和8009端口就是做这两个事。
Engin

  • Engine下可以配置多个虚拟主机Virtual Host,每个虚拟主机都有一个域名,当Engine获得一个请求时,它把该请求匹配到某个Host上,然后把该请求交给该Host来处理,Engine有一个默认虚拟主机,当请求无法匹配到任何一个Host上的时候,将交给该Host来处理。
Host

  • 代表一个虚拟主机,每个虚拟主机和某个网络域名Domain Name相匹配,每个虚拟主机下可以部署一个或者多个WebApp,每个WebApp对应一个Context,每个Context都有一个Context Path,当Host获得一个请求时,将把该请求匹配到某个Context上,然后把该请求交给该Context来处理。
Context

  • 一个Context 对应于一个Web Application,一个Web Application 由一个或者多个Servlet组成,Context在创建的时候将根据配置文件 $CATALINA_HOME/conf/web.xml和$WEBAPP_HOME/WEB-INF/web.xml载入Servlet类。
附图:
http://s5.运维网.com/wyfs02/M02/8B/A6/wKiom1hTntPB6Q_DAAAd-6r44v8841.gif
  


  

  

  

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-641179-1-1.html 上篇帖子: tomcat修改war包路径 下篇帖子: Tomcat系列之Java技术详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表