【Service】【Web】【Middleware】Tomcat
1. 概念
1.1. 官方网站:tomcat.apache.org
1.2. tomcat的组件
<Server>
<Service>
<Connector/>
<Connector/>
<Engine>
<Host>
<Context/>
</Host>
<Host>
</Host>
</Engine>
</Service>
</Server>
每个组件都由“类”实现:
此些组件可分为如下几类:
顶级组件:Server
服务组件:Service
连接器组件:http,https,ajp
容器类:Engine,Host,Context
被嵌套类组件:value,logger,realm,loader,manager
集群类组件:listener
2. 安装:
2.1. JDK
2.2. Tomcat:
系统自带的rpm包
tomcat
tomcat-lib
tomcat-admin-web
tomcat-web-apps
使用官方的二进制编译包
tar xf apache-tomcat-VERSION.tar.gz -C /usr/local
cd /usr/local
ln -sv apache-tomcat-VERSION tomcat
/etc/profile.d/tomcat.sh
CATALINA_BASE=/usr/local/tomcat
PATH=$CATALINA_BASE/bin:$PATH
export CATALINA_BASE PATH
tomcat的目录结构:
bin:脚本,及启动时用到的类;
3. 配置文件
server.xml:主配置文件;
context.xml:每个webapp都可以有专用的配置文件,这些配置文件通常位于webapp应用程序自己的目录下的WEB-INF目录中;此context.xml为每个webapp提供默认配置
web.xml:每个webapp只有在"部署"后才能被访问,这些配置文件通常位于webapp应用程序自己的目录下的WEB-INF目录中;此文件则用于为各webapps定义默认的部署方式
tomcat-user.xml:用户认证的账号和密码文件;
catalina.policy:当使用-security选项来启动tomcat实例时,会取此配置文件来实现基于安全策略的运行方式;
catalina.properties:java属性的定义文件,用于设定类加载器路径,以及一些与jvm调优相关的参数等;
logging.propeties:日志系统相关的配置
4. JSP WebAPP组织结构:
/:webapps的根目录:
index.jsp:主页;
WEB-INF/:当前webapp的私资源的目录,通常存放当前webapp自用的context.xml;
META-INF/:当前webapp的私资源的目录,通常存放当前webapp自用的context.xml
classes/:类文件,当前webapp的私有类;
lib/:当前webapp的私有类,被打包成jar格式;
web归档格式:
war:webapp
jar:EJB的类打包文件
rar:资源适配器打包文件
ear:企业级webapp
JSP --> jasper --> servlet(PAGE_jsp.java) --> complier -->bytecode(PAGE_jsp.class) --> JVM
5. 手动添加一个测试应用程序
创建webapp特有的目录结构;
mkdir -pv myapp/{classes.lib, WEB-INF,META-INF}
提供webapp的测试页面;
myapp/index.jsp
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<html>
<head>
<title>JSP Test Page</title>
</head>
<body>
<% out.println("hello world"); %>
</body>
</html>
6. 部署(deploy)webapp的相关操作;
deploy:将webapp的源文件放置于目标目录、配置tomcat服务器能够基于context.xml文件中定义的路径来访问此webapp;将其特有的类通过class loader装载至tomcat;
自动部署:auto deploy
手动部署:
冷部署:把webapp复制到指定位置,而后才启动tomcat;
热部署:在不停止tomcat的前提下进行的部署;
部署工具:manager app、ant脚本、tcd(Tomcat Client Deployer)等等;
undeploy:反部署,停止webapp,并从tomcat实例上拆除其部署文件和部署名;
stop:停止,不再向用户提供服务;
start:启动处于“停止”状态的webapp;
redeploy:重新部署;
7. Tomcat自带的应用程序;
manager app:webapp管理工具;
host manager:VHosts管理工具;
8. Tomcat的常用组件:
每个组件几乎都是通过特有的类来实现,而且有的组件还不止一种实现方式;
Server:tomcat实例,即运行一个jvm进程;监听于8005端口接收“SHUTDOWN”,各“server监听的端口不能相同”;因此,一个物理主机上启动多个server实例应该使用不同的端口;
Service:用于实现将一个或多个connector关联至一个engine;
connector组件:
进入tomcat的请求可分为两类:
tomcat自己作为独立的应用程序服务器:standalone,此时,请求将来自于浏览;
tomcat作为应用服务器:请求将来自于前面反向代理服务器;
httpd:http,https,ajp
nginx:http,https
属性:
address:监听的IP地址;
maxThreads:最大并发连接数,默认为150;
port:监听的端口;
protocal:连接器使用的协议,一般为HTTP/1.1或AJP/1.3;
redirectPort:如果有https请求,则转发至此端口;
connectionTimeout:连接的超时时长,单位为毫秒,默认为60000;
enableLookups:是否通过DNS进行查询,一般不会打开
acceptCount:定义等待队列的长度;
scheme:定义请求协议的类型
debug:调试功能
secure:开启安全功能
clientAuth:是否验证客户端证书
sslProtocal:SSL协议的版本,建议使用TLS
Engine:Servlet的一个实例,即servlet引擎,其内部可以有一个或多个Host组件来定义;通常需要通过defaulHost的属性定义默认虚拟主机
属性:
name=
defaultHost=
jvmRoute=
Host组件:位于Engine容器中用于接收请求并进行相应处理的主机或虚拟主机,如前面实例中的定义;
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
属性:
appBase:此Host的webapps目录,即存放非归档的web应用程序的目录或归档后的WAR文件的目录路径;可以使用基于$CATALINA_HOME的相对路径;
autoDeploy:在Tomcat处于运行状态时放置于appBase目录中的应用程序文件是否自动进行deploy,默认为true;
unpackWars:在启用此webapps时是否对WAR格式的归档文件先进行展开;默认为true;
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps">
<Context path="" docBase="ROOT"/>
<Context path="/bbs" docBase="/web/bss"
reloadable="true" crossContext="true"/>
</Host> <Host name="mail.magedu.com" appBase="/web/mail">
<Context path="/" docBase="ROOT"/>
</Host>
</Engine>
【Service】【Web】【Middleware】Tomcat的更多相关文章
- 【两种方式 Service References和 web References 】手把手教你引入webservice 服务
1.对于一个webservie服务我们如何引入到自己的项目中去呢 第一种方法[Service References]:鼠标移到属性上 右键添加服务引用 然后在地址栏输入webservice 地址 点击 ...
- Python开发【第二十二篇】:Web框架之Django【进阶】
Python开发[第二十二篇]:Web框架之Django[进阶] 猛击这里:http://www.cnblogs.com/wupeiqi/articles/5246483.html 博客园 首页 ...
- Python开发【第二十一篇】:Web框架之Django【基础】
Python开发[第二十一篇]:Web框架之Django[基础] 猛击这里:http://www.cnblogs.com/wupeiqi/articles/5237704.html Python之 ...
- 【Web探索之旅】第一部分:什么是Web?
内容简介 1.Web探索之旅:开宗明义 2.第一部分第一课:什么是Web? 3.第一部分第二课:Web,服务和云 4.第一部分第三课:Web的诞生史 Web探索之旅:开宗明义 大家好. 我们这个系列课 ...
- Spring MVC 学习笔记1 - First Helloworld by Eclipse【& - java web 开发Tips集锦】
Spring MVC 学习笔记1 - First Helloworld by Eclipse reference:http://www.gontu.org 1. 下载 Spring freamwork ...
- 008-centos6.5搭建web服务【nginx-tomcat8-jre8】
一.机器配置 yum install vim 1.1.Linux最大进程以及打开文件数 ulimit -n和-u可以查看linux的最大进程数和最大文件打开数. ulimit -a 展示所有 临时方法 ...
- Python之路【第十八篇】:Web框架们
Python之路[第十八篇]:Web框架们 Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Pytho ...
- Python之路【第十五篇】:Web框架
Python之路[第十五篇]:Web框架 Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 1 2 3 4 5 6 ...
- 【ASP.NET Web API教程】3 Web API客户端
原文:[ASP.NET Web API教程]3 Web API客户端 Chapter 3: Web API Clients 第3章 Web API客户端 本文引自:http://www.asp.net ...
- 【Web探索之旅】第四部分:Web程序员
内容简介 1.第四部分第一课:什么是Web程序员? 2.第四部分第二课:如何成为Web程序员? 3.第四部分第三课:成为优秀Web程序员的秘诀 第四部分:Web程序员(完结篇) 大家好.终于来到了[W ...
随机推荐
- js 鼠标和键盘事件
js 鼠标和键盘事件 鼠标事件 聚焦事件 离焦事件 鼠标单击和双击 鼠标的其他事件 鼠标事件对象 键盘事件 鼠标事件 聚焦事件 <input type="text" id=& ...
- 学信网改绑手机号码,但是忘记了老号码怎么办?利用node.js + puppeteer 跑脚本实现改绑手机号
最近登录学信网发现自己学信网上绑定的手机号码不是目前自己使用的手机号码,于是想改绑手机号,但是发现不记得之前的手机号码了: 于是百度各种方法都无济于事:也不想重新注册账号,最后看见一篇文章通过Pyth ...
- 一行导出所有任意微软SQL server数据脚本-基于Python的微软官方mssql-scripter工具使用全讲解
文章标题: 一行导出所有任意微软SQL serer数据脚本-基于Python的微软官方mssql-scripter工具使用全讲解 关键字 : mssql-scripter,SQL Server 文章分 ...
- Django 小实例S1 简易学生选课管理系统 10 老师课程业务实现
Django 小实例S1 简易学生选课管理系统 第10节--老师课程业务实现 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块中,老师将要使 ...
- 新装centos机器基础配置之基础软件包安装
新装系统在做完基础的基线配置和加固还有yum源配置,还要安装一些基础软件.以备后期安装不便. centos6和7都可安装类基础包 yum install tree nmap dos2unix lsof ...
- 利用opencv进行简易的拍照并处理照片
今天用python写了一个调用摄像头拍照并对图片进行素描化或动漫化的小demo. 首先我的环境是:PyCharm+python3.8+opencv-python(4.4.0.42) 我们分析一下思路, ...
- [atARC116F]Deque Game
假设两个操作者分别为$A$和$B$,其中$A$希望最大.$B$希望最小 (并不默认$A$为整局游戏的先手,仅是最终的结果考虑$A$为先手时) 记第$i$个队列第$j$个元素为$a_{i,j}$(其中$ ...
- 群晖ping自动关机
因为学校宿舍环境的原因,每天早上10点左右宿管可能会来检查内务情况,然后一定会关闭电闸,就导致如果我的nas在10点半时开机的话用的是UPS的电源,直接导致UPS电量耗竭,而我又不可能一直去观察宿舍有 ...
- 当 dotnet-monitor 遇上 Prometheus, 是种什么样的体验?
对于开发和运维人员来说, 监控大屏很棒, 让我们来做一个 Dashboard 吧! 大家可能听说过一些 CLI 诊断工具, 比如 dotnet-counters,dotnet-dump 和 dotne ...
- 洛谷 P5233 - [JSOI2012]爱之项链(Polya 定理+递推)
洛谷题面传送门 首先很明显题目暗示我们先求出符合条件的戒指数量,再计算出由这些戒指能够构成的项链的个数,因此考虑分别计算它们.首先是计算符合条件的戒指数量,题目中"可以通过旋转重合的戒指视作 ...