文章目录
JVM介绍
JVM是Java Virtual Machine(Java虚拟机)的缩写,Java虚拟机本质是就是一个程序,当它在命令行上启动的时候,就开始执行保存在某字节码文件中的指 令。Java语言的可移植性正是建立在Java虚拟机的基础上。任何平台只要装有针对于该平台的Java虚拟机,字节码文件(.class)就可以在该平台上运行。这就是"一次编译,多次运行"。
Tomcat介绍
1、常见的Java web 服务器软件
weblogic:Oracle公司的,大型JavaEE服务器,支持所有的JavaEE规范,收费。
WebSphere:IBM公司的,大型JavaEE服务器,主支持所有的JavaEE规范,收费。
JBOSS:支持所有的JavaEE规范,收费。JBOSS公司的,大型JavaEE服务器,
Tomcat:Apache基金组织,中小型avaEE服务器,仅支持少量的JavaEE规范(serverlet/jsp),开源,免费
Tomcat与Nginx有什么区别?
Tomcat是一个java版的web服务器
Nginx仅支持静态资源,而Tomcat则支持Java开发的 jsp 动态资源和静态资源。
Nginx适合做前端负载均衡,而Tomcat适合做后端应用服务处理。
通常情况下,企业会使用 Nginx+tomcat 结合使用,由Nginx处理静态资源,Tomcat处理动态资
源。
Tomcat启动慢怎么处理
进行优化
bash
#将配置改为file:/dev/urandom,本质是用非阻塞的随机数设备替代阻塞的设备,解决因熵池不足导致的 Java 程序阻塞问题 ------ 这是最直接的优化手段
vi /usr/java/jdk1.8.0_102/jre/lib/security/java.security
securerandom.source=file:/dev/urandom
Tomcat目录结构介绍
bash
├── bin #主要包含启动、关闭tomcat脚本和脚本依赖文件 非常重要
├── BUILDING.txt
├── conf #tomcat配置文件目录 非常重要
├── CONTRIBUTING.md
├── lib #tomcat运行需要加载的jar包 非常重要
├── LICENSE #license文件
├── logs #在运行过程中产生的日志文件 非常重要
├── catalina.2021-04-14.log
├── catalina.out # 输出日志,类似nginx的error_log
├── host-manager.2021-04-14.log
├── localhost.2021-04-14.log
├── localhost_access_log.2021-04-14.txt #站点访问日志,类似nginx的access_log
└── manager.2021-04-14.log
├── NOTICE
├── README.md
├── RELEASE-NOTES #版本特性
├── RUNNING.txt #帮助文件
├── temp #存放临时文件
├── webapps #站点目录,默认访问子目录ROOT 非常重要
└── work #tomcat运行时产生的缓存文件
Tomcat配置文件
首页可以理解Catalina架构
Catalina是 Tomcat 的核心 Servlet 容器实现, 它是 Tomcat 处理 Web 请求的 "心脏",由一系列层级化组件构成,每个组件有明确职责,协同完成 "接收请求→分发请求→执行 Servlet→返回响应" 的全流程
Catalina组件
| 组件 | 职责 |
|---|---|
| Catalina | 解析Tomcat配置文件,创建Server组件并管理其生命周期 |
| Server | 代表整个Catalina Servlet容器及组件,组装并启动Servlet引擎、连接器,通过Lifecycle接口实现系统优雅启停 |
| Service | Server内部组件,一个Server包含多个Service,将多个Connector绑定到一个Engine(Container)上 |
| Connector | 处理客户端通信,接收客户请求并转给容器处理,最后返回响应结果 |
| Container | 处理用户的Servlet请求,将处理结果返回给Web用户 |
Container容器
| 容器组件 | 描述 |
|---|---|
| Engine | 表示整个Catalina的Servlet引擎,管理多个虚拟站点;一个Service最多含一个Engine,一个Engine可包含多个Host |
| Host | 代表一个虚拟主机/站点,Tomcat可配置多个虚拟主机;一个Host可包含多个Context |
| Context | 表示一个Web应用程序;一个Web应用可包含多个Wrapper |
| Wrapper | 表示一个Servlet,是容器最底层,不能包含子容器 |
Catalina 的 "组件" 是 Tomcat 中构成 Catalina 架构的顶层模块(包括 Server、Service、Connector、Container);而 "容器" 是Catalina 组件中 "Container" 的内部子结构(即 Engine、Host、Context、Wrapper)------ 简言之:容器是 Catalina 组件的一个 "子集",是 Container 的细分模块。
Nginx的配置格式
bash
#nginx 配置架构
stream{
}
http { #Engine
upstream {
}
server { #host
location { #Context
}
}
}
Tomcat核心配置文件路径
bash
/app/apache-tomcat-9.0.45/conf/server.xml
一个tomcat实例一个server
一个server中包含多个Connector,Connector的主要功能是接受、响应用户请求。
service的作用是:将connector关联至engine(catalina引擎)
一个host就是一个站点,类似于nginx的多站点
context类似于nginx中location的概念