tomcat

Tomcat由一系列的组件构成,其中核心的组件有三个:

(1) web容器:完成web服务器的功能。

(2) servlet容器:名字为catalina,用于处理Servlet代码。

(3 ) JSP容器:用于将JSP动态网页翻译成Servlet代码。

因此Tomcat是web应用服务器,也是一个Servlet/JSP容器。Tomcat作为 Servlet容器,负责处理客户请求,把请求传送给servlet,并将servlet的响应传送回给客户。

什么是servlet ?
Servlet 是 Java Servlet 的简称,可以理解为是一个服务连接器,是用Java编写的服务器端程序,具有独立于平台和协议的特性,简单的理解: servlet就是一个中间件,包含了接口和方法,将客户端和数据库连接,从而实现动态网页的创建。

什么是JSP?
JSP 全称 Java Server Pages,是一种动态网页开发技术。它使用JSP 标签在HTML,网页中插入Java代码。标签通常以 <% 开头,以 %> 结束。
JSP是一种Java servlet,主要用于实现Java web 应用程序的用户界面部分。
JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

Tomcat 功能组件结构:
Tomcat的核心功能有两个,分别是负责接收和反馈外部请求的连接器Connector,和负责处理请求的容器Container:其中连接器和容器相辅相成,一起构成了基本的 web服务Service。每个Tomcat服务器可以管理多个Service。

Conector: 负责对外接收和响应请求。它是Tomcat与外界的交通枢纽,监听端口接收外界请求,并将请求处理后传递给容器做业务处理,最后将容器处理后的结果响应给外界。

Container: 负责对内处理业务逻辑。其内部由 Engine、Host、Context和wrapper 四个容器组成,用于管理和调用Servlet相关逻辑。

Service:对外提供的web服务。主要包含Connector和 Container两个核心组件,以及其他功能组件。Tomcat可以管理多个

Service,且各Service 之间相互独立

Container 结构分析
每个Service 会包含一个Container容器。在Container内部包含了4个子容器:4个子容器的作用分别是:
(1) Engine:引擎,用来管理多个虚拟主机,一个Service最多只能有一个Engine:

( 2) Host:代表一个虚拟主机,也可以叫站点,通过配置 Host 就可以添加站点;

( 3) Context:代表一个 web 应用,包含多个Servlet封装器;

(4) wrapper:封装器,容器的最底层。每一Wrapper封装着一个Servlet,负责对象实例的创建、执行和销毁功能。

Engine、Host、Context和 wrapper,这四个容器之间属于父子关系。
容器由一个引擎可以管理多个虚拟主机。每个虚拟主机可以管理多个web应用。每个web应用会有多个Servlet封装器

Tomcat请求过程
:
1、用户在浏览器中输入网址,请求被发送到本机端口8080,被在那里监听的 Connector获得;

2、Connector 把该请求交给它所在的Service 的 Engine (Container)来处理,并等待Engine的回应;

3、请求在Engine、Host、Context和Wwrapper 这四个容器之间层层调用,最后在Servlet 中执行对应的业务逻辑、数据存储等。

4、执行完之后的请求响应在Context、Host、Engine容器之间层层返回,最后返回给Connector,并通过Connector 返回给客户端。

Tomcat 服务部署
在部署 Tomcat 之前必须安装好 jdk,因为 jdk 是 Tomcat 运行的必要环境。
1.关闭防火墙,将安装 Tomcat 所需软件包传到/opt目录下
jdk-8u201-linux-x64.rpm
apache-tomcat-9.0.16.tar.gz

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

2.安装JDK
cd /opt
rpm -qpl jdk-8u201-linux-x64.rpm 
rpm -ivh jdk-8u201-linux-x64.rpm 
java -version

3.设置JDK环境变量
vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

source /etc/profile.d/java.sh
java -version

首先使用文本工具编写java源代码,比如 Hello.java ;
在命令行中,输入命令:javac Hello.java,对源代码进行编译,生成 class 字节码文件;
编译完成后,如果没有报错信息,输入命令:java Hello,运行 class 字节码文件,由 JVM 对字节码进行解释和运行,打印 “Hello World”。


vim Hello.java
#类名、接口名命令:英文大小写字母、数字字符、$和_,不能使用关键字和数字开头;
一个单词命名时第一个单词的首字母要大写;多单词组成时,所有单词的首字母大写:XxxYyyZzz(大驼峰命名法)
public class Hello {            
  public static void main(String[] args){
    System.out.println("Hello world!");
  }
}

javac Hello.java
java Hello

4.安装启动Tomcat
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat
##启动tomcat ##
#后台启动
/usr/local/tomcat/bin/startup.sh 

/usr/local/tomcat/bin/catalina.sh start    
    
#前台启动
/usr/local/tomcat/bin/catalina.sh run        

netstat -natp | grep 8080

浏览器访问Tomcat的默认主页 http://192.168.100.100:8080

5.优化tomcat启动速度
第一次启动tomcat可能会发现 Tomcat 启动很慢,默认情况下可能会需要几十秒,可以修改jdk参数进行改。
vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security
--117行--修改
securerandom.source=file:/dev/urandom
----------------------------------------------------------------------------------------------------------
●tomcat 启动慢的原因是随机数产生遭到阻塞,遭到阻塞的原因是 熵池大小 。
●/dev/random:阻塞型,读取它就会产生随机数据,但该数据取决于熵池噪声,当熵池空了,对/dev/random 的读操作也将会被阻塞。
●/dev/urandom:非阻塞的随机数产生器,它会重复使用熵池中的数据以产生伪随机数据。这表示对/dev/urandom的读取操作不会产生阻塞,但其输出的熵可能小于/dev/random的。它可以作为生成较低强度密码的伪随机数生成器,不建议用于生成高强度长期密码。
●Linux内核采用熵来描述数据的随机性。熵(entropy)是描述系统混乱无序程度的物理量,一个系统的熵越大则说明该系统的有序性越差,即不确定性越大。在信息学中,熵被用来表征一个符号或系统的不确定性,熵越大,表明系统所含有用信息量越少,不确定度越大。计算机本身是可预测的系统,因此,用计算机算法不可能产生真正的随机数。但是机器的环境中充满了各种各样的噪声,如硬件设备发生中断的时间,用户点击鼠标的时间间隔等是完全随机的,事先无法预测。Linux内核实现的随机数产生器正是利用系统中的这些随机噪声来产生高质量随机数序列。内核维护了一个熵池用来收集来自设备驱动程序和其它来源的环境噪音。理论上,熵池中的数据是完全随机的,可以实现产生真随机数序列。为跟踪熵池中数据的随机性,内核在将数据加入池的时候将估算数据的随机性,这个过程称作熵估算。熵估算值描述池中包含的随机数位数,其值越大表示池中数据的随机性越好。
----------------------------------------------------------------------------------------------------------

/usr/local/tomcat/bin/shutdown.sh 
/usr/local/tomcat/bin/startup.sh 

ll /usr/local/tomcat/
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值