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文件。

时间: 2024-11-29 01:47:44

tomcat 解析(一)-文件解析的相关文章

(转)AVI文件格式解析+AVI文件解析工具

AVI文件解析工具下载地址:http://download.csdn.net/detail/zjq634359531/7556659 AVI(Audio Video Interleaved的缩写)是一种RIFF(Resource Interchange File Format的缩写)文件格式,多用于音视频捕捉.编辑.回放等应用程序中.通常情况下,一个AVI文件可以包含多个不同类型的媒体流(典型的情况下有一个音频流和一个视频流),不过含有单一音频流或单一视频流的AVI文件也是合法的.AVI可以算是

NSXMLParser(SAX解析)大文件解析

NSXMLParser(SAX解析)大文件解析 - (void)viewDidLoad { [ { [super viewDidLoad]; // 1.创建URL NSURL *url = HMUrl(@"video?type=XML"); // 2.创建请求 NSURLRequest *request = [NSURLRequest requestWithURL:url]; // 3.发送请求 [NSURLConnection sendAsynchronousRequest:requ

PDFBox 解析PDF文件-解析服务器文件

1.首先引进pom <!-- PDF读取依赖 --><dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.0.4</version></dependency> 2.controller层直接代码 /** * PDF解析 * @return */@PostMapping(

Java通过jxl解析Excel文件入库,及日期格式处理方式 (附源代码)

JAVA可以利用jxl简单快速的读取文件的内容,但是由于版本限制,只能读取97-03  xls格式的Excel. 本文是项目中用到的一个实例,先通过上传xls文件(包含日期),再通过jxl进行读取上传的xls文件(文件格式见下user.xls),解析不为空的行与列,写入数据库. 文件user.xls格式为: 下面来看代码实例演示: 一.前端jsp页面(本来内容很多,这里精简了) <%@ page language="java" contentType="text/htm

Tomcat是如何启动及运行—对tomcat的源码解析

本文是我阅读了Tomcat源码后的一些心得.主要是讲解Tomcat的系统框架,启动流程已经运行过程.若有错漏之处,敬请批评指教. 先给出几个问题: tomcat作为一个应用服务器的程序入口在哪里? tomcat的整体组件结构是什么样的? tomcat是什么时候及如何创建线程来处理请求的? tomcat的配置文件context.xml,server.xml,tomcat-users.xml,web.xml什么时候加载的及作用是什么? 最后,tomcat是如何启动运行的? 我通过源码来分析这些问题.

文件解析漏洞汇总

解析漏洞正如其名,一般大家常说的是,文件在某种格式下,会被执行为该脚本语言的文件. 文件上传漏洞通常与Web容器的解析漏洞配合利用 常见Web容器有IIS.Nginx.Apache.Tomcat等 好了正文开始汇总了,反正都转载贴的,我自己也忘了在哪里看到的了,就不注明转贴地址了. IIS 6.0解析漏洞 目录解析:/xx.asp/xx.jpg xx.jpg可替换为任意文本文件(e.g. xx.txt),文本内容为后门代码 IIS6.0 会将 xx.jpg 解析为 asp 文件. 后缀解析:/x

Java 创建过滤器 解析xml文件

今天写了一个过滤器demo,现在是解析actions.xml文件,得到action中的业务规则:不需要导入任何jar包 ActionFilter过滤器类: package accp.com.xh.utils; import java.io.IOException; import java.io.InputStream; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.Filte

maven项目无法解析jsp文件

场景 使用eclipse创建了一个webapp的maven项目,如上图所示: 图中是为maven项目进行的build path. build path 中为项目配置的是tomcat7 jdk1.8. 然后用maven build 启动maven项目,在goals中输入命令:tomcat:run. 项目启动成功,访问页面时出现无法解析jsp文件.如下图: 为什么还会是tomcat6在运行呢? 原因: 配置了tomcat7,但是在maven项目中并未起到作用,也正是没有如此,maven会使用默认的服

Nginx、Apache解析php文件的区别

一.Apache是如何解析php文件的 我们常说的lamp架构是linux.apache.mysql.php,我们知道任何架构或者网站离不开数据库的支持,那么php和apache又是如何协同工作的呢? php是apache的一个外挂程序,必须依靠web服务器才可以运行.当客户端浏览器触发事件--->php程序提交到apache服务器---->apache服务器根据php程序的特点判断是php程序,并从内存或者硬盘中提取访问所需要的应用程序,将其提交给php引擎程序--->php引擎程序解

接口测试-解析har文件

之前我已经研究到让业务测试通过不同方式来获取我们工具需要的har文件,现在我们拿到了业务测试提供的har文件,我们首先要解析这些文件里存放的信息,特别是entries字段里的信息,在万能的github上果然搜出来一个工具包 地址 har 因为maven库里还没有这个jar包提供下载,你需要将源码下载到本地,打包后上传到自己公司的私有库里,供其他开发者下载 源码 主要的类为HarUtils.java,还有命令行下执行需要的2个类(HarCli.java,ViewHar.java),这两个类的主要作