Tomcat 7下如何利用 catalina.properties 部署公用类
Tomcat 有很多配置文件,其中一个是 catalina.properties ,本文介绍catalina.properties 中的设置项。
一、组成
catalina.properties中的设置项包括四个部分:
#第一部分:安全设置
package.access
package.definition
#第二部分:类加载设置
common.loader
server.loader
shared.loader
#第三部分:不需要扫描的类设置
tomcat.util.scan.DefaultJarScanner.jarsToSkip
org.apache.catalina.startup.ContextConfig.jarsToSkip
org.apache.catalina.startup.TldConfig.jarsToSkip
#第四部分:字符缓存设置
tomcat.util.buf.StringCache.byte.enabled
tomcat.util.buf.StringCache.char.enabled
tomcat.util.buf.StringCache.trainThreshold
tomcat.util.buf.StringCache.cacheSize
二、安全设置
请参见 :
http://tomcat.apache.org/tomcat-7.0-doc/security-manager-howto.html
http://www.oracle.com/technetwork/java/seccodeguide-139067.html
三、类加载设置
请参见:
http://tomcat.apache.org/tomcat-7.0-doc/class-loader-howto.html
1、classloader加载顺序
Bootstrap--->System--->/WEB-INF/classes---> /WEB-INF/lib/*.jar---> Common
Common的配置是通过 catalina.properties中的common.loader设置的。
2、common.loader设置
通常情况下,common.loader是已经设置好的,不需要修改。
common.loader包括以下路径:
- unpacked classes and resources in
$CATALINA_BASE/lib - JAR files in
$CATALINA_BASE/lib - unpacked classes and resources in
$CATALINA_HOME/lib - JAR files in
$CATALINA_HOME/lib
和默认的一些jar包:
- annotations-api.jar — JavaEE annotations classes.
- catalina.jar — Implementation of the Catalina servlet container portion of Tomcat.
- catalina-ant.jar — Tomcat Catalina Ant tasks.
- catalina-ha.jar — High availability package.
- catalina-tribes.jar — Group communication package.
- ecj-*.jar — Eclipse JDT Java compiler.
- el-api.jar — EL 2.2 API.
- jasper.jar — Tomcat Jasper JSP Compiler and Runtime.
- jasper-el.jar — Tomcat Jasper EL implementation.
- jsp-api.jar — JSP 2.2 API.
- servlet-api.jar — Servlet 3.0 API.
- tomcat-api.jar — Several interfaces defined by Tomcat.
- tomcat-coyote.jar — Tomcat connectors and utility classes.
- tomcat-dbcp.jar — Database connection pool implementation based on package-renamed copy of Apache Commons Pool and Apache Commons DBCP.
- tomcat-i18n-**.jar — Optional JARs containing resource bundles for other languages. As default bundles are also included in each individual JAR, they can be safely removed if no internationalization of messages is needed.
- tomcat-jdbc.jar — An alternative database connection pool implementation, known as Tomcat JDBC pool. See documentation for more details.
- tomcat-util.jar — Common classes used by various components of Apache Tomcat.
这些都是系统和工具类,比如数据库的驱动类库、log 类库可以放到此处,web应用的jar 不要放到common.loader 中。
3、server.loader 和 shared.loader
在common.loader 加载完后,tomcat启动程序会检查 catalina.properties文件中配置的server.loader和shared.loader是否设置
如果设置,读取 tomcat下对应的server和shared这两个目录的类库。
server和shared是对应tomcat目录下的两个目录,默认的Tomcat7 下这两个目录是没有的。
设置方法:
server.loader=${catalina.base}/server/classes,${catalina.base}/server/lib/*.jar
shared.loader=${catalina.base}/server/classes,${catalina.base}/server/lib/*.jar
同时需要在tomcat目录下创建 server和shared目录结构并将公用的、应用类放到里面。
Bootstrap--->System--->/WEB-INF/classes---> /WEB-INF/lib/*.jar---> Common--->Server--->Shared
四、忽略扫描的类设置
默认的一些类tomcat已经设置。
五、字符缓存设置
根据需要设置字符的缓存策略。
默认 tomcat.util.buf.StringCache.byte.enabled=true 设置,其他的被注释了。
六、小结
Tomcat可以通过catalina.properties的server和shared设置,为webapp提供公用类库。
使一些公用的、不需要与webapp放在一起的设置信息单独保存,在更新webapp的war的时候无需更改webapp的设置。
备注:
Tomcat 遵循的规范如下:
- EL 2.2 API.
- JSP 2.2 API.
- Servlet 3.0 API.
很多的配置文件的规则都在这几个规范中定义。
Tomcat 7下如何利用 catalina.properties 部署公用类的更多相关文章
- Eclipse下配置javaweb项目快速部署到tomcat
用惯了VS,再用Eclipse,完全有一种从自动挡到手动挡的感觉啊. 很多同学在Eclipse下开发web项目,每一次修改代码,看效果的时候都有右键项目->Run as -> Run on ...
- 使用Maven自动部署Tomcat 6和Tomcat 7下Web应用
使用Maven自动部署Tomcat 6和Tomcat 7下Web应用 开启Tomcat远程管理权限 在tomcat的config目录下的tomcat-users.xml文件, <role rol ...
- Tomcat—怎样在Tomcat Webserver下部署Web项目
总结一下怎样在Tomcat Webserver下部署Web项目:
- Eclipse 单个tomcat多个项目部署原理(tomcat配置的环境变量catalina.home和catalina.base)
一:概念 catalina.home(安装目录):指向公用信息的位置,就是bin和lib的父目录. catalina.base(工作目录):指向每个Tomcat目录私有信息的位置,就是conf.log ...
- Tomcat创建虚拟目录和程序热部署
虚拟目录的设置 方法一:在${tomcat安装目录}/conf/Catalina/localhost目录下添加与web应用同名的xml配置文件,这里站点名称为test为例子. test.xml内容:& ...
- tomcat启动(二)org.apache.catalina.startup.Bootstrap分析
/** * Bootstrap loader for Catalina. This application constructs a class loader * for use in loading ...
- Tomcat 映射虚拟目录和程序热部署
虚拟目录的设置 方法一:在${tomcat安装目录}/conf/Catalina/localhost目录下创建一个xml文件,任意文件名都可以,但是此文件名是web应用发布后的虚拟目录: 比如创建一个 ...
- catalina.properties
追踪 startup.bat set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat" call "%EXECUTABLE%&q ...
- jenkins+Gitlab+maven+tomcat实现自动集成、打包、部署
一.前言 首先出于提高自己技术水平和琢磨能做点什么能提高工作效率,上线工作实在无聊.重复(手动编译.打包,传包,重启),于是就想到了jenkins,jenkins持续集成已经不是什么新鲜的话题,网上文 ...
随机推荐
- headers的描述
Cache-Control 作用: 这个是非常重要的规则. 这个用来指定Response-Request遵循的缓存机制.各个指令含义如下 Cache-Control:Public 可以被任何缓存所 ...
- Python使用ElementTree美化XML格式
Python中使用ElementTree可以很方便的处理XML,但是产生的XML文件内容会合并在一行,难以看清楚. 如下格式: <root><aa>aatext<cc&g ...
- Redis 学习之集群
该文使用centos6.5 64位 redis3.2.8 一. redis-cluster架构图 集群通信:所有redis节点之间通过PING-PONG机制彼此互联,内部使用二进制鞋子优化传输速度 ...
- 【python】Python: Enum枚举的实现
从C#系语言过来用Python,好不容易适应了写代码不打花括号,突然有一天发现它居然木有枚举……于是stackoverflow了一把,发现神人的枚举(enum)实现到处都是,于是汉化总结过来. 如果是 ...
- BZOJ 1898 沼泽鳄鱼(矩阵快速幂)
没有食人鱼不是裸题吗,用一个向量表示从s到1..N的距离,然后不停乘邻接矩阵行了,当然快速幂 有食人鱼,发现食人鱼最多十二个邻接矩阵一循环,处理出12个作为1个然后快速幂行了 怎么处理呢? 假设食 ...
- [BZOJ5339] [TJOI2018]教科书般的亵渎
题目链接 BZOJ题面. 洛谷题面. Solution 随便推一推,可以发现瓶颈在求\(\sum_{i=1}^n i^k\),关于这个可以看看拉格朗日插值法. 复杂度\(O(Tm^2)\). #inc ...
- BZO4197 & 洛谷2150 & UOJ129:[NOI2015]寿司晚宴——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4197 https://www.luogu.org/problemnew/show/P2150 ht ...
- excel 列索引(数字)转列名
function index2ColName($columnNumber) { $dividend = $columnNumber; while ($dividend > 0) { $modul ...
- bzoj1257: [CQOI2007]余数之和sum(数论)
非常经典的题目... 要求 则有 实际上 最多只有2*sqrt(k)种取值,非常好证明 因为>=sqrt(k)的数除k下取整得到的数一定<=sqrt(k),而k除以<=sqrt(k) ...
- eclipse中支持python
1. 启动eclipse,help-> Install New Software; 2. 点击add 3. 设置Repository name: pydev Location: http://p ...