tomcat
tomcat简介
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了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最新版本为10.0.5。
java体系
根据不同的技术规范,Java划分为3中结构独立但又相互依赖的技术分支:Java SE(标准版)、Java EE(企业版)、Java ME(精简版)
-
Java SE:活跃在桌面领域,主要包含Java API组件。
-
Java EE:活跃在企业级领域,主要包含Java API组件、Web组件、事务组件、分布式组件、EJB组件、消息组件;综合这些技术开发人员完全可以构建出一个具备高性能、结构严谨的企业级应用,并且Java EE也是构建SOA架构的首选平台。
-
Java ME:活跃在嵌入式领域,称为精简版是因为JavaME仅保留了Java API中的部分组件,以及适应设备的一些特有组件。

JAVA体系的优点
-
跨平台(摆脱硬件平台的约束):“Write once,Run anywhere”主要由字节码支持。因为Java源代码默认编译结果为平台通用的字节码。
-
体系结构中立 :Java源代码的默认编译结果并不是可执行代码(本地机器指令),而是具有平台通用性的字节码;实现了“一次编译,处处运行”,并且只能在java虚拟机中运行,与物理宿主环境隔离。
-
安全性优越 :因为java字节码只能在java虚拟机中运行,与物理宿主环境隔离,实现了安全模型,有助于防止错误发生,增强程序的可靠性。同时,Java的废弃指针操作,自动内存管理,数组边界检查,类型转换检查,线程安全机制和物理环境访问限制等语法限制也保证了程序的安全。
-
多线程 :Java使用多线程的并发机制将任务进行分散,而不是全部集中在主线程内,采用异步的方式并发执行多项任务,具有极高的执行效率。
-
分布式 :Java与生俱来对分布式技术的支持比较完善,充分利用分布式环境中的每一个节点去协同处理任务,具有高效的执行效率,还能有效降低单机负载以及提升稳定性和可用性。(如:RMI--Java远程方法调用,JMS--Java消息服务)
-
丰富的第三方开源组件 :随处可见成熟的第三方开源框架。
Java技术体系所包含的内容

JDK与JRE的关系:
JDK
支持Java程序开发的最小环境。JDK=Java程序设计语言+Java虚拟机+Java API类库。
JDK又称J2SDK(Java2 Software Development Kit),是Java开发工具包,它提供了Java的开发环境(提供了编译器javac等工具,用于将java文件编译为class文件)和运行环境(提 供了JVM和Runtime辅助包,用于解析class文件使其得到运行)。如果你下载并安装了JDK,那么你不仅可以开发Java程序,也同时拥有了运 行Java程序的平台。JDK是整个Java的核心,包括了Java运行环境(JRE),一堆Java工具tools.jar和Java标准类库 (rt.jar)。
JRE
支持Java程序运行的标准环境。JRE=Java虚拟机+Java API类库中的Java SE API子集 。
JRE是Java的运行环境。面向Java程序的使用者,而不是开发者。如果你仅下载并安装了JRE,那么你的系统只能运行Java程序。JRE是运行Java程序所必须环境的集合,包含JVM标准实现及 Java核心类库。它包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具(编译器、调试器等)。
中间件
中间件(英语:Middleware),又译中间件、中介层,是一类提供系统软件和应用软件之间连接、便于软件各部件之间的沟通的软件,应用软件可以借助中间件在不同的技术架构之间共享信息与资源。中间件位于客户机服务器的操作系统之上,管理着计算资源和网络通信。
中间件的好处
中间件能给客户带来什么?为上层应用软件的开发提供便捷的、开箱即用的服务交互和计算的能力,缩短开发周期;屏蔽底层runtime的差异;节省应用本身的系统资源,减少运行成本。
常用基础中间件
-
路由与web服务器:处理和转发其他服务器通信数据的服务器。 如被业界广泛使用的阿里基于 Nginx 研发的 Tengine、阿里内部的集中式路由服务 VipServer
-
RPC框架:微服务时代的远程服务调用框架。如grpc, Thrift, 阿里的 HSF, Dubbo, SOFA-RPC
-
消息中间件:支持在分布式系统之间发送和接收消息的软件。 如 Apache kafka, Apache RabbitMQ, NSQ, 阿里孵化开源的 Apache RocketMQ
-
缓存服务: 分布式的高速数据存储层,一般是内存存储。如 阿里 Tair,业界的 Redis, Memcached, Ehcache
-
配置中心:用来统一管理各个项目中所有配置的系统。如 阿里 Nacos、携程 Apollo、百度 Disconf
-
分布式事务:事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。 如 阿里 seata、腾讯 DTF
-
任务调度:分布式环境下提供定时、任务编排、分布式跑批等功能的系统。如 阿里 SchedulerX、业界 xxl-job、当当 elastic-job、有赞 TSP
-
数据库层 用于支持弹性扩容和分库分表的 TDDL,数据库连接池 Driud, Binlog 同步的 Canal 等。
tomcat部署
安装java环境
[root@cst ~]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
//查看版本
[root@cst ~]# java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
安装tomcat
//解压安装
此处已提前准备好安装包
[root@cst ~]# tar xf apache-tomcat-10.0.6.tar.gz
[root@cst ~]# mkdir /usr/local/tomcat
[root@cst ~]# mv apache-tomcat-10.0.6 /usr/local/tomcat/jenkins
[root@cst ~]# ls /usr/local/tomcat/jenkins/
bin lib README.md webapps
BUILDING.txt LICENSE RELEASE-NOTES work
conf logs RUNNING.txt
CONTRIBUTING.md NOTICE temp
[root@cst jenkins]# bin/catalina.sh start
[root@cst jenkins]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 100 *:8080 *:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
//创建一个hello world的java项目网页和目录
[root@cst webapps]# vim test/index.jsp
<html>
<head>
<title>test page</title>
</head>
<body>
<%
out.println("Hello World");
%>
</body>
</html>
//重启服务
[root@cst webapps]# cd ..
[root@cst jenkins]# ./bin/catalina.sh stop
[root@cst jenkins]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
[root@cst jenkins]# ./bin/catalina.sh start
[root@cst jenkins]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 100 *:8080 *:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
//目录内容与配置文件
[root@cst jenkins]# ls bin/
...
catalina.sh #tomcat服务控制
configtest.sh #配置文件测试
daemon.sh #守护进程
[root@cst jenkins]# ll
total 132
drwxr-x---. 2 root root 4096 May 13 21:48 bin #二进程命令存放
-rw-r-----. 1 root root 18975 May 8 23:24 BUILDING.txt
drwx------. 3 root root 254 May 13 21:55 conf #配置文件
-rw-r-----. 1 root root 5644 May 8 23:24 CONTRIBUTING.md
drwxr-x---. 2 root root 4096 May 13 21:48 lib #库文件存放
-rw-r-----. 1 root root 60269 May 8 23:24 LICENSE
drwxr-x---. 2 root root 132 May 13 21:55 logs #日志存放
-rw-r-----. 1 root root 2333 May 8 23:24 NOTICE
-rw-r-----. 1 root root 3372 May 8 23:24 README.md
-rw-r-----. 1 root root 6904 May 8 23:24 RELEASE-NOTES
-rw-r-----. 1 root root 16517 May 8 23:24 RUNNING.txt
drwxr-x---. 2 root root 30 May 13 21:48 temp
drwxr-x---. 8 root root 93 May 13 22:00 webapps #项目存放位置
drwxr-x---. 3 root root 22 May 13 21:55 work
[root@cst jenkins]# vim conf/server.xml
……
#控制端口协议
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
#AJP协议控制
<!--
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443" />
-->
//图形化管理界面配置
[root@cst jenkins]# vim conf/tomcat-users.xml
#在倒数第二行添加如下内容
<role rolename="manager-gui"/> #添加角色
<user username="tomcat" password="123456" roles="manager-gui"/> #添加用户密码
[root@cst jenkins]# vim webapps/host-manager/META-INF/context.xml
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192\.168\.209.\d+|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> //放行192.168.209网段
[root@cst jenkins]# ./bin/catalina.sh stop
[root@cst jenkins]# ./bin/catalina.sh start
在浏览器中输入本机ip 192.168.209.129:8080/test/

进入tomcat界面

进入管理界面


浙公网安备 33010602011771号