title: Tomcat 组件简介
date: 2020/05/06 17:19
先简单介绍一下 Tomcat 中的各种组件,要不你后面听不懂
conf/server.xml
根据Tomcat自身的分类,上面这些元素可以分成四种:
一个Tomcat只有一个 Server.xml,即 一个Tomcat实例只有一个Server 。
它不是一个容器,它只是单纯地扮演着一个包裹的角色。
它代表 Tomcat 实例本身。
Server可配置的属性很少。根据上面摘录的默认配置,Server会侦听localhost的TCP端口8005,当该端口接收到字符串"SHUTDOWN"时,即执行关闭Tomcat操作。
Server有两种特有的组件,一个是GlobalNamingResources(全局命名资源),一个是Service(服务)。
除此之外,还可以有Listener(监听器)这种可以作用于不同层次容器的组件。Server默认配置了六种Listener。配置在Server这一层的Listener对所有容器起作用。
它代表整个 Tomcat 实例,因此它还有一个作用,就是监听 SHUTDOWN 请求。
它是一个顶层组件,用于包裹它下面的多个 Service 组件。
一个Service就是一个完整的服务, 负责将若干个Connector和一个Engine(引擎)包裹在一起 。除此之外,Service还可以配置一个Executor(共享线程池)用于管理所有Connector的线程数量。
如图所示,Service有Executor、Connector和Engine三种组件。其中,每个Connector负责侦听一个TCP端口,接收相应的请求,并转发给绑定的Engine处理。Engine处理完后,通过Connector把结果返回给客户端。在配置了Executor的情况下,所有Connector的线程受Executor统一管理。
它的作用是将多个连接器与容器实例联系起来,使得不同协议的请求可以使用同一个容器来处理。
Engine是Service的请求处理引擎,负责处理所有Connector发过来的请求,并将内部处理完毕的结果返回给Connector。它是最外层的容器。
Engine.name - 引擎的名称
Engine.defaultHost - 默认采用哪一个子容器Host来处理请求
Engine 的作用是可以采用一个连接器接收请求并映射到不同的域名中
一个Host就是一个虚拟主机,对应一个或多个域名。
Host.name - 主机名称(域名)
默认配置定义了一个名为 localhost 的主机。至少要有一个Host的名称与Engine的defaultHost一致。
除了域名外,Host可以通过子节点alias来配置别名。别名的作用与域名一致。例如:
其作用机制如下图所示:
Host.appBase - 虚拟主机的根目录
Host.unpackWARs - 放到 webapps 目录下的 WAR-file 是否应该被解压
Host.autoDeploy - 是否自动部署放到 webapps 目录下的应用
Context代表Host下面的一个虚拟目录。
默认是不配置的
Context.docBase - 应用程序的路径或者是WAR文件存放的路径
Context.path - 此web应用程序的上下文路径
Context.reloadable - 是否支持热部署
如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,并通过类加载器重新加载class文件,以实现在不重启tomcat的情况下重新部署。
Context.crossContext - 不同context是否共享session
开头说过,Connector就是墙上的插座,负责侦听一个具体的TCP端口,并通过该端口处理Engine与客户端之间的交互。默认配置定义了两个 Connector:
Valve的中文含义是阀门,可以简单地理解为Tomcat的拦截器。它负责在请求发送到应用之前拦截HTTP请求,可以定义在任何容器中。默认配置中定义了一个AccessLogValve,负责拦截HTTP请求,并写入到日志文件中。
Listener即监听器,负责监听服务器端的行为。此处需要了解的监听器有两个:
请求地址为: http://my.oschina.net/mzdbxqh
一个学习的总结,或者说是汇总,有些链接给出的观点过时,已按照自己的理解经过修改编辑;
web服务器
Web服务器的基本功能就是提供Web信息浏览服务,响应客户端的浏览器请求。因为Web服务器主要支持的协议就是HTTP,所以通常情况下HTTP服务器和WEB服务器是相等的。待考:支持除HTTP之外的协议的web服务器?
不支持事务处理或数据库连接池,但它可以配置各种策略来实现容错性和可扩展性,例如负载平衡,缓冲,集群。
IIS、Apache、Tomcat都可以属于Web服务器。
IIS 是微软开发的web服务器,需要收费,主要用来跑 asp.net asp php,只能在windows下运行。
Apache与Tomcat都是Apache开源组织开发的用于处理HTTP服务的项目,两者都是免费的,都可以做为独立的Web服务器运行。Apache是Web服务器而Tomcat是Java应用服务器。Apache服务器 只处理 静态HTML,而tomcat服务器 静态HTML 动态 JSP Servlet 都能处理。
一般是把 Apache服务器 与 tomcat服务器 搭配在一起用:
1) Apache服务器 负责处理所有 静态的 页面/图片 等信息。
2) Tomcat 只处理动态的 部分。
Apache:是C语言实现的,专门用来提供HTTP服务。特性:简单、速度快、性能稳定、可配置(代理)
1、主要用于解析静态文本,并发性能高,侧重于HTTP服务;
2、支持静态页(HTML),不支持动态请求如:CGI、Servlet/JSP、PHP、ASP等;3、具有很强的可扩展性,可以通过插件支持PHP,还可以单向Apache连接Tomcat实现连通;
4、Apache是世界使用排名第一的Web服务器。
Tomcat:是Java开发的一个符合JavaEE的Servlet规范的JSP服务器(Servlet容器),是 Apache 的扩展。特性:免费的Java应用服务器
1、主要用于解析JSP/Servlet,侧重于Servlet引擎;
2、支持静态页,但效率没有Apache高;支持Servlet、JSP请求;
3、Tomcat本身也内置了一个HTTP服务器用于支持静态内容,可以通过Tomcat的配置管理工具实现与Apache整合。
Apache + Tomcat:两者整合后优点:如果请深圳市是静态网页则由Apache处理,并将结果返回;如果是动态请求,Apache会将解析工作转发给Tomcat处理,Tomcat处理后将结果通过Apache返回。这样可以达到分工合作,实现负载远衡,提高系统的性能。apache是web服务器,tomcat是应用(java)服务器,它只是一个servlet容器,可以认为是apache的扩展,但是可以独立于apache运行。独立于apache运行。换句话说,apache是一辆卡车,上面可以装一些东西如html等。但是不能装水,要装水必须要有容器(桶),而这个桶也可以不放在卡车上。
Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。
Nginx与Apache比较:
1)轻量级,同样起web 服务,比apache占用更少的内存及资源 ;
2)高并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能 ;
3)高度模块化的设计,编写模块相对简单 ;
4)提供负载均衡;
5)apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程;
Web Server中文名称叫网页服务器或web服务器。WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务 IIS
IIS是微软公司的Web服务器。主要支持ASP语言环境,对于中小企业来说建立自己的网站,对外展示自己的页面是最平常不过的事情了。目前最流行的建立WWW服务工具就要属Apache与IIS了。 IIS只能在微软公司的windows操作系统下使用,离开了windows他将一事无成。无法移植到其他类型的操作系统中。
Tomcatjava里面一个web容器,就是一个http请求来了,它帮你接受,可能再对请求做些处理,然后拉起你controller的代码,把请求传进去,最后当controller处理结束后,再把请求简单处理一下返回给请求者。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
CDN中文叫内容分发网络,都是云服务商在运营,它可以让你的用户在访问资源的时候就近访问,提高静态资源的访问速度。
这些都是不同的东西,不过都是概念上的,功能上有一定的重叠,不过在使用中基本都是不同的东西。
一般生产上iis,nginx,apache都是当反向代理用,少数情况会当静态文件服务器用。tomcat,无论何时都是web容器。cdn一般只在生产上用,主要是提供静态文件服务。
至于他们的实现,理论上讲用什么语言否没问题,不管是java node还是啥的,不过有现成的,应该没人会造新的。
Apache
Apache是一个web服务器环境程序 启用他可以作为web服务器使用 不过只支持静态网页. 但asp,php,cgi,jsp等动态网页的就不行. 如果要在APACHE环境下运行jsp 的话就需要一个解释器来执行jsp网页, 而这个jsp解释器就是TOMCAT, 为什么还要JDK呢?因为jsp需要连接数据库的话就要jdk来提供连接数据库的驱程,所以要运行jsp的web服务器平台就需要APACHE+TOMCAT+JDK 整合的好处是:如果客户端请求的是静态页面,则只需要Apache服务器响应请求如果客户端请求动态页面,则是Tomcat服务器响应请求因为jsp是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销。
apache是web服务器,tomcat是应用(java)服务器,它只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展。
Apache:普通服务器,本身只支持html即普通网页,它是html容器,功能像IIS一样
tomcat:解释java程序(jsp,serverlet),它是是jsp/servlet容器,用于发布JSP及JAVA的
apache是一辆卡车,上面可以装一些东西如html等。但是不能装水,要装水必须要有容器(桶),tomcat就是一个桶(装像JAVA这样的水),而这个桶也可以不放在卡车上。
诀窍是, 当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为9.0。
NginxNginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。
nginx相对于apache的优点
轻量级,同样起web 服务,比apache占用更少的内存及资源
抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
高度模块化的设计,编写模块相对简单
提供负载均衡
社区活跃,各种高性能模块出品迅速
总结Nginx优点:负载均衡、反向代理、处理静态文件优势。nginx处理静态请求的速度高于Apache优点:相对于Tomcat服务器来说处理静态文件是它的优势,速度快。Apache是静态解析,适合静态HTML、图片等。
Tomcat:动态解析容器,处理动态请求,是编译JSPServlet的容器,Nginx有动态分离机制,静态请求直接就可以通过Nginx处理,动态请求才转发请求到后台交由Tomcat进行处理。
Apache在处理动态有优势,Nginx并发性比较好,CPU内存占用低,如果rewrite频繁,那还是Apache较适合。
反向代理的理解:
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,
并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
您的提问,有我回答,我是IT屠工!
IIS
IIS是互联网信息服务,是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。
IIS是一种Web(网页)服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。
IIS的功能
IIS是一个World Wide Web server。Gopher server和FTP server全部包容在里面。 IIS支持一些有趣的东西,像有编辑环境的界面(FRONTPAGE)、有全文检索功能的(INDEX SERVER)、有多媒体功能的(NET SHOW)。
其次,IIS是随Windows NT Server 4.0一起提供的文件和应用程序服务器,是在Windows NT Server上建立Internet服务器的基本组件。它与Windows NT Server完全集成,允许使用Windows NT Server内置的安全性以及NTFS文件系统建立强大灵活的Internet/Intranet站点。
Apache
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。
Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。
Apacheweb服务器软件主要功能:
1.支持最新的HTTP/1.1通信协议
2.拥有简单而强有力的基于文件的配置过程
3.支持通用网关接口
4.支持基于IP和基于域名的虚拟主机
5.支持多种方式的HTTP认证
6.集成Perl处理模块
7.集成代理服务器模块
8.支持实时监视服务器状态和定制服务器日志
9.支持服务器端包含指令(SSI)
10.支持安全Socket层(SSL)
11.提供用户会话过程的跟踪
12.支持FastCGI
13.通过第三方模块可以支持JavaServlets
Tomcat
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,因为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服务器。
Nginx
Nginx 是一款自由的、开源的、高性能的 HTTP 服务器和反向代理服务器;同时也是一个 IMAP、POP3、SMTP 代理服务器。
Nginx 可以作为一个 HTTP 服务器进行网站的发布处理,另外 Nginx 可以作为反向代理进行负载均衡的实现。
CDN
CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
CDN网络中包含的功能实体包括内容缓存设备、内容交换机、内容路由器、CDN内容管理系统等组成。
CDN具有以下主要功能:
1.节省骨干网带宽,减少带宽需求量;
2.提供服务器端加速,解决由于用户访问量大造成的服务器过载问题;
3.服务商能使用Web Cache技术在本地缓存用户访问过的Web页面和对象,实现相同对象的访问无须占用主干的出口带宽,并提高用户访问因特网页面的相应时间的需求;
4.能克服网站分布不均的问题,并且能降低网站自身建设和维护成本;
5.降低“通信风暴”的影响,提高网络访问的稳定性。
以上是我的回答,希望可以帮助到您!
iis apache nginx属于一类,都是web服务,本身提供静态文件访问功能,同时又可以通过扩展接入其他语言的解析。tomcat是针对java类的web服务容器。可以这样理解iis apache nginx是阿里,tomcat是京东。而cdn只是一种服务的统称,用到的web服务器则可能不同,有用nginx实现cdn的,也有自研的。
这类再简单介绍一下,iis主要针对微软系的语言。当然也支持php等。但是主要用于微软系。
apache主要以扩展方式运行,比如php,如果想在apache里运行,你得给apache写个扩展,这样才可以跑php,也就是耦合度比较高。
nginx以性能闻名。运行web主要靠反向代理和协议。这样其他语言只需要按照协议通讯即可无需开发nginx扩展。耦合度低。
一个网站最少要包括域名和空间,域名就是我们平时所说的网址,空间则是用来放网页内容的。1、申请域名:您的域名需要便于记忆、了解,可以是您品牌的名称的英文或中文拼音。
2、申请空间:也称作虚拟主机,申请空间后备案,备案是不收费的。
* 可用dreamweaver等软件设计好网站后用FTP上传到购买的空间上。
加咱,我可以帮你。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)