文章目录

  • 了解Tomcat服务
  • 部署Tomcat服务

了解Tomcat服务

  • Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目
  • Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用
  • 由Apache、Sun 和其他一些公司及个人共同开发而成
  • 因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器
  • Tomcat核心组件有三个:Web容器(Web服务器)、Servlet容器(名为catalina,处理Servlet代码)、JSP容器(将JSP动态网页翻译成Servlet代码)

Tomcat处理请求过程

Tomcat的两个核心组件:Connector和Container

1.Connector组件

一个Connector组件将在某个指定的端口上侦听客户请求,接收浏览器发过来的tcp连接请求,创建一个Request和一个Response对象分别用于和其你去端交换数据,然后会产生一个线程来处理这个请求并把产生的Request和Response对象传给Engine,从Engine中获得响应并返回给客户端。 Tomcat有两个经典的Connector,一个直接侦听来自浏览器的HTTP请求,另外一个侦听来自其他的WebServer的请求。Cotote HTTP/1.1 Connector在端口8080处侦听来自客户浏览器的HTTP请求,Coyote JK2 Connector在端口8009处侦听其他WebServer的Servlet/JSP请求。 Connector 最重要的功能就是接收连接请求然后分配线程让 Container来处理这个请求,所以这必然是多线程的,多线程的处理是 Connector 设计的核心。

2.Container组件

Container组件的体系结构如下:

Container

Container是容器的父接口,该容器的设计用的是典型的责任链的设计模式,它由四个自容器组件构成,分别是Engine、Host、Context、Wrapper。这四个组件是负责关系,存在包含关系。通常一个Servlet class对应一个Wrapper,如果有多个Servlet则定义多个Wrapper,如果有多个Wrapper就要定义一个更高的Container,如Context。 Context定义在父容器 Host 中,其中Host 不是必须的,但是要运行 war 程序,就必须要 Host,因为 war 中必有 web.xml 文件,这个文件的解析就需要 Host 了,如果要有多个 Host 就要定义一个 top 容器 Engine 了。而 Engine 没有父容器了,一个 Engine 代表一个完整的 Servlet 引擎。

Engine

Engine 容器比较简单,它只定义了一些基本的关联关系 Host 容器

Host

Host 是 Engine 的字容器,一个 Host 在 Engine 中代表一个虚拟主机,这个虚拟主机的作用就是运行多个应用,它负责安装和展开这些应用,并且标识这个应用以便能够区分它们。它的子容器通常是 Context,它除了关联子容器外,还有就是保存一个主机应该有的信息。

Context

Context 代表 Servlet 的 Context,它具备了 Servlet 运行的基本环境,理论上只要有 Context 就能运行 Servlet 了。简单的 Tomcat 可以没有 Engine 和 Host。Context 最重要的功能就是管理它里面的 Servlet 实例,Servlet 实例在 Context 中是以 Wrapper 出现的,还有一点就是 Context 如何才能找到正确的 Servlet 来执行它呢? Tomcat5 以前是通过一个 Mapper 类来管理的,Tomcat5 以后这个功能被移到了 request 中,在前面的时序图中就可以发现获取子容器都是通过 request 来分配的

Wrapper

Wrapper 代表一个 Servlet,它负责管理一个 Servlet,包括的 Servlet 的装载、初始化、执行以及资源回收。Wrapper 是最底层的容器,它没有子容器了,所以调用它的 addChild 将会报错。 Wrapper 的实现类是 StandardWrapper,StandardWrapper 还实现了拥有一个 Servlet 初始化信息的 ServletConfig,由此看出 StandardWrapper将直接和 Servlet 的各种信息打交道。

Tomcat的Http请求过程

用户点击网页内容》》请求被发送到本机端口8080》》被在那里监听的Coyote HTTP/1.1 Connector获得》》Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应》》Engine获得请求localhost/test/index.jsp》》匹配所有的虚拟主机Host》》Engine匹配到名为localhost的Host》localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有的Context》》Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet》》Context把执行完之后的HttpServletResponse对象返回给HostContext把执行完之后的HttpServletResponse对象返回给Host》》Engine把HttpServletResponse对象返回Connector》》Connector把HttpServletResponse对象返回给客户Browser

部署Tomcat服务

安装JDK包

[root@localhost opt]# rpm -ivh jdk-8u201-linux-x64.rpm    ## 安装JKD包

设置环境变量

[root@localhost opt]# cd /usr/java/jdk1.8.0_201-amd64/[root@localhost jdk1.8.0_201-amd64]# vi /etc/profile   ## 编辑系统环境变量文件修改系统环境变量(在文件末尾添加):export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH[root@localhost jdk1.8.0_201-amd64]# source /etc/profile    ## 重载环境变量配置文件

使用命令查看环境变量是否设置成功

[root@localhost jdk1.8.0_201-amd64]# java -version    ## 查看Java库版本信息
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

安装tomcat

[root@localhost opt]# tar zxvf apache-tomcat-9.0.16.tar.gz -C /usr/local/    ## 解压缩

为了方便管理,我们将tomcat进行重命名

[root@promote local]# mv apache-tomcat-9.0.16/ tomcat

为了便于管理,将服务管理脚本建立软连接

[root@localhost opt]# cd /usr/local/tomcat/bin/
[root@localhost bin]# ln -s /usr/local/tomcat/bin/startup.sh /usr/bin/     ## 启动脚本
[root@localhost bin]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/bin/    ## 关闭脚本

启动Tomcat服务并查看服务端口

[root@localhost bin]# startup.sh    ## 启动服务[root@localhost bin]# netstat -natp | grep 8080    ## 查看服务端口是否启动
tcp6       0      0 :::8080                 :::*                    LISTEN      74004/java

优化startup(秒开)

[root@promote security]# cd /usr/java/jdk1.8.0_201-amd64/jre/lib/security
[root@promote security]# vim java.security
securerandom.source=file:/dev/urandom    把rangdom修改成urandom

打开浏览器输入服务器IP地址+端口号进行访问

http://192.168.136.88:8080/

Tomcat服务安装与部署(安装与优化)相关推荐

  1. DO280OpenShift安装与部署--安装部署与验证

    DO280OpenShift安装与部署–安装部署与验证

  2. 综合架构网站服务概念原理/部署安装(三)

    网站服务防盗链优化设置 什么是盗链概念:盗取链接 == 消耗网站流量资源 1.用户访问 B 盗链网站(图片A) 消耗图片资源 A网站流量 ​ 占用A网站带宽 云主机:网络通讯计费模式 ​ 固定带宽计费 ...

  3. 5.VMware View 4.6安装与部署-安装view agent与模版

    准备一台windows7的虚拟机用来作为模版,安装好后打好补丁,然后进行必要的系统优化和配置用户环境,在优化后,为虚拟机安装VMware Tools. 确认安装tools 到此,虚拟机vmware t ...

  4. Tomcat服务的下载和安装

    下载地址: https://tomcat.apache.org/download-90.cgi#9.0.54 下载选项: **安装: ** 下载成功后会为压缩包文件,解压即可使用 ,将解压后的Tomc ...

  5. Git从零教你入门(4):Git服务之 gogs部署安装

    Git从零入门系列4: 先看上一篇文章: http://www.51testing.com/index.php?uid-497177-action-viewspace-itemid-3706817 今 ...

  6. Office web app server2013详细的安装和部署

    SharePoint 2013集成Office web apps server2013详细的安装和部署  安装前的需要理解的: 1.Office Web Apps 只能由使用基于声明的身份验证的 Sh ...

  7. Orange API 网关部署安装总结

    目录 背景 第一部分 编译安装 第二部分 高版本安装 第三部分 docker安装 第四部分 总结 参考文献及资料 背景 orange是基于Nginx+lua研发的API网关项目.该项目为国人自研项目, ...

  8. Docker最新超详细教程——安装与部署

    Docker最新超详细教程--安装与部署 安装Docker CentOS安装Docker 1. 卸载(可选) 2. 安装yum工具 3. 更新本地镜像源 4. 安装docker 5. 注意事项 关闭防 ...

  9. Visual Studio 2008 项目安装和部署

    这是我在参考别人写的博客之后根据自己的项目实况部分修改了一下 一.新建一个Windows 窗体应用程序,例如项目名为testWindows ,功能略.新建的时候不要忘了创建解决方案. 二.在testW ...

最新文章

  1. window和linux和android进程内存CPU等监控软件
  2. 四个变量的图表怎么做_年终总结必备:Excel双色图表怎么做?数据表达更直观...
  3. 你真的了解用户吗?-浅谈《用户画像》的意义和方法
  4. radio和文字无法对齐
  5. chrome关闭自动更新 mac
  6. 计算机windows7更新失败,win7笔记本电脑配置update失败如何解决
  7. 【解决方案】GB28181/RTSP/Onvif/HikSDK/Ehome协议视频共享平台EasyCVR人脸识别助力打造智慧安检
  8. GB50052-2009供配电系统设计规范1
  9. odoo采购单入库代码剖析
  10. ArcCatalog不能预览地图服务
  11. 世界主要的11种气候类型特点及分布
  12. 变量、参数和内存分配
  13. 防火墙的访问控制策略
  14. 百万调音师—Audition降噪
  15. 网站吊唁效果(黑白)
  16. Vue项目在标签中如何书写多个内敛style样式
  17. 鼎智收购北斗星手机网 推全新手机品牌青葱
  18. satisfy with用法
  19. C语言温度转换窗体,C语言1_1:温度转换
  20. ppt插入的flash有白边的问题

热门文章

  1. 几种常见的Web攻击
  2. Easy Tech:什么是MPEG-DASH协议
  3. LiveVideoStack线上交流分享 (九) —— B站的QUIC实践简介
  4. CentOS 下线,TencentOS Server 全新登陆带来最强支持
  5. Shell脚本中字符串的一些常用操作
  6. 最全的搜索引擎优化(SEO)术语表
  7. vue axios springboot 跨域
  8. npm 更改默认全局路径以及国内镜像
  9. ubuntu16 redis5.0以后版本集群部署示例
  10. Hadoop企业优化