tomcat 解析(一)-文件解析
做web项目,最常用的服务器就是Apache的tomcat。虽然一直在用tomcat,但都是仅限在使用的阶段,一直没有深入学习过。想深入学习tomcat,首推的肯定是官网:http://tomcat.apache.org/ (虽然全是英文,看起来比较晦涩,但还是推荐大家在官网学习,一方面权威,另一方面锻炼了自己的英文能力。博主自己英文不好,但仍坚持看官网。)
开始了解一下tomcat的内部结构,博主用的tomcat版本是:apache-tomcat-8.0.3-windows-x86,解压之后打开,里面是:
先看一下除了文件夹以外的其他文件。
LICENSE顾名思义就是许可证,里面记录了tomcat的一些条款等等。
NOTICE里面记录了tomcat的新的通知,公告。
RELEASE-NOTES这里面记录的是发行版本的说明,一些捆绑的API,新特性等等。
RUNNING.txt记录了tomcat的运行环境以及怎样配置参数,变量,启动等等。
================华丽的分割线====================
下面开始介绍文件夹里面的内容。
bin文件夹
bin文件夹下面放的是可执行性文件,其中:bat/exe文件是windows下可执行的脚本文件。sh文件时Linux/Unix下可执行的脚本文件。其中还有一些jar文件,后面将会说到。
下面是bin文件夹下所有文件:
开始一一介绍。
bootstrap.jar 从文件名可以看出这个jar包是引导程序jar包,是tomcat的入口。
catalina.bat 这个脚本就比较重要了。这个脚本完成了很多基本操作,如启动
关闭等,catalina.bat都参与其中。
catalina.sh文件作用同catalina.bat,只不过在Linux/Unix系统下运行。
catalina-tasks.xml 配置文件,主要是引入各种jar包。
commons-daemon-native.tar.gz Linux/Unix下。
configtest.bat 检测语法是否正确的脚本文件。
cpappend.bat 这个脚本可以这样理解,classpath(cp)append就是将指定参数添加到classpath里面。
digest.bat 博主暂时也没弄清。
service.bat 启动tomcat服务。和注册tomcat服务那块有关系。
setclasspath.bat 设置classpath的脚本,在catalin.bat脚本中调用,可以设置java_home,jre_home等。
shutdown.bat 主要是检查catalina.bat 执行所需环境,并调用catalina.bat 批处理文件关闭tomcat服务。
startup.bat 主要是检查catalina.bat 执行所需环境,并调用catalina.bat 批处理文件启动tomcat服务。
tcnative-1.dll 加速器组件,可以提高性能。(也是在网上搜到的)
tomcat8.exe
tomcat8w.exe
tomcat-juli.jar Apache Tomcat由一个自己的实现了java.util.logging多个关键元素的实现。这个实现被称为“JULI”。实现的核心组件是定制化的LogManager,可以获取运行在Tomcat中的不同web应用(以及不同的class loader)。他支持为应用配置单独的日志配置。当有web应用从内在中是被卸载时,会接到Tomcat的通知,以便他所引用的类可以被清除,避免内存泄露。
tomcat-native.tar.gz 里面放的是tomcat本地的library。
tool-wrapper.bat 工具包装脚本
version.bat 一般是用来判断系统版本获取系统版本信息等。
conf(configurator)文件夹
conf(configurator)文件夹下面放的是配置文件
catalina.policy tomcat策略文件
catalina.properties catalina配置文件
context.xml tomcat公用的环境配置,也可以在server.xml中配置<context />
logging.properties 日志配置文件
server.xml 相当重要的配置,端口、线程池等都需要在这里配置。
元素名 |
属性 |
解释 |
server |
port |
指定一个端口,这个端口负责监听关闭tomcat的请求 |
shutdown |
指定向端口发送的命令字符串 |
|
GlobalNamingResources |
服务器的全局JNDI资源,可以有子标签<Resource></Resource> |
|
Executor(线程池,一个或多个Connector可以共享此线程池) |
name |
线程池名称,名称必须唯一 |
namePrefix |
线程的名字前缀,用来标记线程名字的,这样每个线程就用这个前缀加上线程编号了,比如 catalina-exec-1 、catalina-exec-2 |
|
maxThreads |
允许的最大线程池里的线程数量,默认是200,大的并发应该设置的高一些,反正只是限制而已,不占用资源 |
|
minSpareThreads |
最小的保持活跃的线程数量,默认是25.这个要根据负载情况自行调整了。太小了就影响反应速度,太大了白白占用资源 |
|
maxIdleTime |
最小的保持活跃的线程数量,默认是25.这个要根据负载情况自行调整了。太小了就影响反应速度,太大了白白占用资源 |
|
threadPriority |
线程的等级。默认是Thread.NORM_PRIORITY |
|
service |
name |
指定service的名字 |
Connector (表示客户端和service之间的连接) |
port |
指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求 |
minProcessors |
服务器启动时创建的处理请求的线程数 |
|
maxProcessors |
最大可以创建的处理请求的线程数 |
|
enableLookups |
如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址 |
|
redirectPort |
指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号 |
|
acceptCount |
指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理 |
|
connectionTimeout |
指定超时的时间数(以毫秒为单位) |
|
Engine (表示指定service中的请求处理机,接收和处理来自Connector的请求) |
name |
|
defaultHost |
指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的 |
|
jvmRoute |
||
host (表示一个虚拟主机、并且可以包含Context子节点配置虚拟目录) |
name |
指定主机名 |
appBase |
应用程序基本目录,即存放应用程序的目录 |
|
unpackWARs |
如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序 |
|
autoDeploy |
自动部署 |
|
xmlValidation |
是否验证xml |
|
xmlNamespaceAware |
||
Realm (表示存放用户名,密码及role的数据库) |
className |
指定Realm使用的类名,此类必须实现org.apache.catalina.Realm接口 |
Context(host子节点配置虚拟目录) |
path |
虚拟目录名称 |
docBase |
物理路径 |
|
Debug |
Debug模式 |
|
Reload |
True 重新加载,修改后自动加载 |
上面是server.xml元素的含义。基本配置都在这里了。
tomcat-users.xml tomcat配置用户的文件。是指定控制台用户、角色、密码的。
<tomcat-users>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="admin" password="123456" roles="admin,manager"/>
</tomcat-users>
通过以上配置,可以为tomcat添加具有管理员权限的用户。
web.xml 访问tomcat入口。配置加载类和资源,如欢迎页等。
lib文件夹
lib文件夹下面放的是tomcat提供的jar包,资源库文件。tomcat运行需要。
Log文件夹
log文件夹存放tomcat日志文件
Temp文件夹
temp文件夹存放临时文件
webapps文件夹
webapps文件夹是Tomcat发布web项目的目录,默认存放了文档,examples,主机配置等文件。
work文件夹
存放jsp编译后的class文件。
tomcat 解析(一)-文件解析的更多相关文章
- (转)AVI文件格式解析+AVI文件解析工具
AVI文件解析工具下载地址:http://download.csdn.net/detail/zjq634359531/7556659 AVI(Audio Video Interleaved的缩写)是一 ...
- poi解析excle文件(xls,xlsx)
解析xls文件 /** * 解析xls文件 * * @param path 文件路径 * @throws Exception */ public static void showXls(String ...
- symbolicatecrash解析crash文件
导出crash文件 Xcode -> Window -> Devices and Simulators -> View Device Logs ,然后选中导出. 找到.app文件和. ...
- 文件解析漏洞总结(IIS,APACHE,NGINX)
(本文主体来自https://blog.csdn.net/qq_36119192/article/details/82834063) 文件解析漏洞 文件解析漏洞主要由于网站管理员操作不当或者 Web ...
- DEX文件解析--7、类及其类数据解析(完结篇)
一.前言 前置技能链接: DEX文件解析---1.dex文件头解析 DEX文件解析---2.Dex文件checksum(校验和)解析 DEX文件解析--3.d ...
- DEX文件解析--4、dex类的类型解析
一.前言 前几篇系列文章链接: DEX文件解析---1.dex文件头解析 DEX文件解析---2.Dex文件checksum(校验和)解析 DEX文件解析--3.dex文件 ...
- DEX文件解析--5、dex方法原型解析
一.前言 前几篇文章链接: DEX文件解析---1.dex文件头解析 DEX文件解析---2.Dex文件checksum(校验和)解析 DEX文件解析--3.dex文件字 ...
- DEX文件解析--6、dex文件字段和方法定义解析
一.前言 前几篇文章链接: DEX文件解析---1.dex文件头解析 DEX文件解析---2.Dex文件checksum(校验和)解析 DEX文件解析--3. ...
- Java中使用DOM4J来生成xml文件和解析xml文件
一.前言 现在有不少需求,是需要我们解析xml文件中的数据,然后导入到数据库中,当然解析xml文件也有好多种方法,小编觉得还是DOM4J用的最多最广泛也最好理解的吧.小编也是最近需求里遇到了,就来整理 ...
- 在tomcat启动时解析xml文件,获取特定标签的属性值,并将属性值设置到静态变量里
这里以解析hibernate.cfg.xml数据库配置信息为例,运用dom4j的解析方式来解析xml文件. 1.在javaWeb工程里新建一个java类,命名为GetXmlValue.java,为xm ...
随机推荐
- 方法:一个简单的读取配置文件.properties的工具类 JAVA
import java.util.ResourceBundle; public class ConfigHelper { private static ConfigHelper instance; p ...
- 探索VS中C++多态实现原理
引言 最近把<深度探索c++对象模型>读了几遍,收获甚大.明白了很多以前知其然却不知其所以然的姿势.比如构造函数与拷贝构造函数什么时候被编译器合成,虚函数.实例函数.类函数的区别等等.在此 ...
- Virtualizing WrapPanel VS toolkit:WrapPanel
用toolkit:WrapPanel的时候,LIST太大,内存不行,等下我试试 Virtualizing WrapPanel这个 http://www.codeproject.com/Articles ...
- 《Mail电子邮件日志存储的管理》RedHat6.3——以一举三
我们都知道很多日志的模块都是放在这下面的 要是想修改或是添加其他服务的日志,怎么办?修改下面的配置文件 测试下是否ok 轮转日志和定位分析和分析日志汇总报告: 安装logwatch软件包,这个没啥说的 ...
- ADO.NET笔记——调用存储过程
相关知识: 在ADO.NET访问SQL Server时,鼓励使用存储过程取代常规的SQL语句. 存储过程有下列优点: 存储过程中的SQL语句将会经过预先的解析和编译,然后存放在数据库服务器上行.调用的 ...
- linux系统目录架构
/bin目录:可执行的二进制文件,shell命令(就是我们说的命令:cp ls ...),所有用户都有权执行. /boot目录:引导目录,整个操作系统启动所需的所有文件都在该目录下,其中最主要的就是v ...
- 工作案件1 一切都是有check引起的
HTML中input标签有两个类型,radio和checkbox,一个单选按钮一个复选按钮.jquery可以通过$(":radio")和$(":checkbox" ...
- 查询sql语句所花时间
--1:下面这种是SQL Server中比较简单的查询SQL语句执行时间方法,通过查询前的时间和查询后的时间差来计算的: declare @begin_date datetime declare @e ...
- CENTOS6.2系统日志rsyslog替换默认的日志服务syslog 转载自http://www.phpboy.net/linux/648.html
最近遇到配置centos 6.2的sshd及sftp日志,发现/etc/syslog.conf文件不存在, 然后: #rpm -qa | grep syslog 出来的是 rsyslog-5.8.10 ...
- JavaScript移除数组元素减少长度的方法
JavaScript移除数组元素减少长度的方法,代码如下: //数组移除长度方法 var array=[]; array[0]="张三"; array[1]="李四& ...