Catalina 六配置文件

官家的自我介绍

https://www.mulesoft.com/tcat/tomcat-catalina

才疏学浅,认知浅薄,多加批评,加以指点

先认识Tomcat

tomcat是Apache旗下的一个开源Servlet的容器,实现了对Servlet和JSP技术支持。
Tomcat本身也内含了HTTP服务器,因此也可以视作单独的Web服务器

目录结构

- bin:可执行文件;如重启服务等等
- conf:配置文件目录;
- lib:类库;tomcat依赖的jar文件
- logs:日志文件
- temp:临时的文件
- webapps:web项目目录
- work:运行产生的文件

什么是catalina?

Catalina是Tomcat服务器的一个核心组件,Tomcat是在一个开源的环境中开发出来的,使用的是Servlet规范(http服务器接收到请求后交给servlet容器处理,servlet容器通过servlet接口调用业务类;servlet容器和接口整个内容叫servlet规范)的实现的,关于Servlet它是一个容器架构出来的(具体再说,也学习中);

为什么Catalina成为核心?
tomcat由众多可编辑配置的组件组成的一个web容器,tomcat启动后,通过加载Catalina解析配置文件service.xml,创建服务器server组件进行管理;server服务器组装和启动servlet引擎和tomcat连接器;其中service作为server内部组件将连接器connector组件绑定到container,最后Container 容器,负责处理⽤户的servlet请求,并返回对象给web⽤户的模块

官方:

when you start up your Tomcat server you're actually starting Catalina.

Catalina的配置文件

Catalina默认行为可编辑Tomcat中位于$CATALINA_BASE/conf目录下的配置文件,可以在每个文件中配置各种选项类型。

一、catalina.policy(安全)

catalina.policy文件里面是Catalina Java类的Tomcat安全,主要以Java EE 规范中定义的标准安全策略语法。Tomcat的核心安全策略,可以实现系统代码、Web 应用程序和 Catalina 本身的权限定义。

默认的配置文件内容:https://opensource.apple.com/source/blojsom/blojsom-67/blojsom_root/conf/catalina.policy.auto.html

标准权限的含义:

- java.util.PropertyPermission - 控制对 JVM 属性的读/写访问,例如java.home.
- java.lang.RuntimePermission - 控制某些系统/运行时函数的使用,例如exit()和 exec()。还控制包访问/定义。
- java.io.FilePermission - 控制对文件和目录的读/写/执行访问.
- java.net.SocketPermission - 控制网络套接字的使用。
- java.net.NetPermission - 控制多播网络连接的使用。
- java.lang.reflect.ReflectPermission - 控制使用反射来进行类内省。
- java.security.SecurityPermission - 控制对安全方法的访问。
- java.security.AllPermission - 允许访问所有权限,就像您在没有 SecurityManager 的情况下运行 Tomcat 一样。

permission类用于定义Tomcat 加载时用于的权限,可以自己创建permission类在web应用程序中使用,

Q: 怎么配置?
A: Java SecurityManager

SecurityManager用于保持服务器安全的防线,允许web浏览器在自己的沙箱(sandbox,虚拟系统程序,运行程序中提供的隔离环境)中运行程序;
Tomcat 使用一个名为 org.apache.naming.JndiPermission的自定义权限类。此权限控制对基于 JNDI 命名文件的资源的读取访问。

permission  org.apache.naming.JndiPermission  "jndi://localhost/examples/*";

permission为每个部署的web应用程序动态生成,允许读取自己的静态资源,但不允许其他文件来读取

二、catalina.properties(属性)

catalina.properties文件是class的标准Java属性文件,它设置了一些重要的类加载器路径、安全包列表和一些可调性能属性缓存字符串的一些设置,另一个特性是可以在此文件中设置自定义属性,并将它们作为变量引用到 Tomcat 的 server.xml文件中对这些文件进行编辑配置,令Tomcat获取最佳性能;

  • 安全设置
    默认情况下,如果通过将-security参数传递给catalina脚本文件来启用 Tomcat 的安全管理器,将使用 - package.access和package.definition属性。
package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.jasper.,org.apache.tomcat.
package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,org.apache.jasper.,org.apache.naming.,org.apache.tomcat.

common类加载器的位置一般就是由catalina.properties文件中的属性定义的
默认的设置顺序:

common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar"
//解压的类和资源 : $CATALINA_BASE/lib
//JAR 文件在 : $CATALINA_BASE/lib/*.jar
//解压的类和资源:  $CATALINA_HOME/lib
//JAR 文件在:  $CATALINA_HOME/lib/*.jar
  • 扫描类
    common.loader加载完毕后,tomcat启动程序检查配置中设置的server.loader和
    shared.loader,默认没有配置;设置后会读取
annotations-api.jar* — JavaEE 注释类。
catalina.jar* — Tomcat 的 Catalina servlet 容器部分的实现。
catalina-ant.jar* — Tomcat Catalina Ant 任务。
catalina-ha.jar* — 高可用性包。
catalina-tribes.jar* - 组通信包。
ecj-*.jar* — Eclipse JDT Java 编译器。
el-api.jar* — EL 2.2 API。
jasper.jar* — Tomcat Jasper JSP 编译器和运行时。
jasper-el.jar* — Tomcat Jasper EL 实现。
jsp-api.jar* — JSP 2.2 API。
servlet-api.jar* — Servlet 3.0 API。
tomcat-api.jar* — Tomcat 定义的几个接口。
tomcat-coyote.jar* — Tomcat 连接器和实用程序类。
tomcat-dbcp.jar* — 基于 Apache Commons Pool 和 Apache Commons DBCP 1.x 的包重命名副本的数据库连接池实现。
tomcat-i18n-**.jar* — 包含其他语言资源包的可选 JAR。由于默认包也包含在每个单独的 JAR 中,因此如果不需要消息的国际化,可以安全地删除它们。
tomcat-jdbc.jar* — 另一种数据库连接池实现,称为 Tomcat JDBC 池。
tomcat-util.jar* — Apache Tomcat 的各种组件使用的通用类。
tomcat7-websocket.jar* — WebSocket 1.1 实现
websocket-api.jar* — WebSocket 1.1 API
  • Jar Scanner组件
    用于扫描Web应用程序来查找jar文件和类文件的目录组件;

Jar Scan Filter元素表示在将来自 Jar Scanner 的结果传递回应用程序之前对其进行过滤的组件。它通常用于跳过已知与某些或所有类型的扫描无关的 JAR 的扫描

//ToSkip要跳过扫描的文件
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=
//ToScan要扫描的文件
tomcat.util.scan.StandardJarScanFilter.jarsToScan=\
  • 字符缓存设置
//默认tomcat.util.buf.StringCache.byte.enabled=开启,其余注释
tomcat.util.buf.StringCache.byte.enabled=true
#tomcat.util.buf.StringCache.char.enabled=true
#tomcat.util.buf.StringCache.trainThreshold=500000
//缓存大小
#tomcat.util.buf.StringCache.cacheSize=5000

三、logging.propertiesr(日志)

logging.propertiesr文件是日志属性的配置文件,是日志记录功能,怎么记录?记录多少?记录在哪里?等一些配置;

然后你看这个配置文件中配置的路径,然后和配置了需要记录哪些日志,去找改路径查看日志;(对于日志路径靠问、靠猜的我,瞬间恍然大悟)

  • 但官方的这么一句话没太明白,(学习中):
Note that all the entries in this log refer to JULI, the modified commons-logging implementation that Tomcat automatically uses in place of your JDK's logging implementation.
//该日志中的所有条目都指向JULI,即经过修改的公共日志实现,Tomcat自动使用它来代替JDK的日志实现。

https://tomcat.apache.org/tomcat-7.0-doc/logging.html
知道了:
关于JULI:是tomcat自身java.util.logging拥有的API关键组件LogManager实现的,可以令每个应用程序都会有自己的日志记录;

  • 日志级别阈值,默认为INFO
    由高到低:SEVERE(最高级别)、WARNING、INFO、CONFIG、FINE、FINER、FINES(最低值)
  • 特殊级别
    OFF,可用来关闭日志记录。
    ALL,启用所有消息的日志记录
org.apache.catalina.level=FINEST
  • 疑问:tomcat既然默认使用的日志JULI,但为什么还是有人选择Log4j;

四、context.xml(上下文容器)

context.xml是一个定义上下文路径(相对于服务器地址的位置,web应用程序的一个名称)的XMl文件;

Tomcat借助Contexts把请求发送到不同的servlet的一种方式;就是HTTP请求发出后,Catalina接收这个请求,然后传递给Context,然后Context又将请求传递给某个servlet服务;

  • 请求路径和context设置路径匹配时,然后就会按照请求传递给对应的Servlet来处理
  • 不匹配时,catalina传递给上下文路径是零长度字符串的上下文;

具体官人是怎么讲: https://tomcat.apache.org/tomcat-7.0-doc/config/context.html

五、server.xml(主配置)&web.xml(加载)

https://www.cnblogs.com/kismetv/p/7228274.html

  • Q:server.xml为什么会做为主要配置文件?
    server.xml文件里面包含了众多元素,通过元素配置来控制Tomcat组件
server.xml

看看有哪些元素:
1、 顶层元素

<Server> & <Service>
  • Server元素
    Server做为最顶层的元素,暴露在最外层(唯一一个);存在的作用就是为客户端提供一个访问的端口,让其能访问到service集合;

常见到的属性:

port属性(Server接收shutdown指令的端口号),设为-1可以禁掉该端口。
shutdown属性(关闭Server的指令)
  • Service元素
    Service是将多个Connector连接器(从客户端接收请求)和一个Engine容器(处理接收到的请求)包裹起来的一个元素;每个不同的Service是可以监听不同的端口;
拓展一下:Tomcat里面常见到的三端口
- 8080(8443)主端口:
监听浏览器发送过来的请求 ,redirectPort 表示如果发送的是 https 请求,就将请求转发到 8443 端口
8443是默认的https的监听端口;
- 8005 shutdown端口 
监听关闭Tomcat的请求,可以通过sh脚本执行“SHUTDOWN”关闭tomcat;
- 8009 ajp代理
Nginx一些反向代理tomcat时就可以使用ajp协议反向代理到这个端口;一般应用服务器交互(再学习后补充吧)

ajp协议?
定向包协议,以二进制格式传输可读性文本

2、连接器
Connector,req和res交换数据,将请求交给Engine容器来处理,

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
// port规定请求端口号;protocol属性规定请求协议;connectionTimeout表示连接的超时时间;
// redirectPort强制要求https而请求是http时,重定向端口号为8443的Connector;、

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

3、容器(祖孙三代)

  • Engine:处理connector接收到客户端的req,然后再将res返回给connector,最后给客户端
<Engine name="Catalina" defaultHost="localhost">

name :日志&错误信息
defaultHost :默认host,本地请求host名称不存在的时,就用defaultHost指定的host处理
  • Host:虚拟主机;客户端在请求时就会将主机名包含在请求头里面,然后Tomcat从请求中提取host
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">

name:虚拟主机的主机名,一个Engine中有且仅有一个Host组件的name属性与Engine组件的defaultHost属性相匹配
unpackWARs:是否将代表Web应用来解压WAR文件;
    true=通过解压后的文件结构运行该Web应用
    false=直接使用WAR文件运行Web应用。
autoDeploy和appBase属性,Host内Web应用的自动部署有关,具体看看链接里面大佬怎么说
  • Context:在特定虚拟主机上运行的一个web应用,但是吧这个元素一般看不到,原因是因为Tomcat配置了自动部署,所以就没在sever.xml文件里面做静态配置;web里面
web.xml

这个文件是web应用程序上的一个配置选项,将添加的配置加载在web应用中;

就这样吧

六、tomcat-users.xml

https://tomcat.apache.org/tomcat-8.0-doc/manager-howto.html
用户、密码、角色;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容