Tomcat catalina.properties

catalina.properties


[root@www conf]# ll catalina.properties
-rw------- 1 root root 7125 Nov  9  2016 catalina.properties

这个是对jar包的一些控制

每个 tomcat服务器都要有自己的类加载器。因为一个服务器需要解决下面几个问题∶

1.部署在同一服务器上的不同项目的类应该相互隔离。

2.部署在同一个服务器上的两个项目应该可以共享一些 java类库。

3.服务应该保证自己的安全不受项目类库的影响。

4.jsp应该支持热加载。

由于这些问题,tomcat在部署项目时就指定了多个classpath。被放置不同位置的类库具备不同的访问范围和服务对象。

在 tomcat 里面有三个classpath(common,server,shared),另外加上 web项目自身的 web-info,一共四个。

common目录里面的类库可以被所有的web项目和 tomcat使用。server 目录里面的类库只能被 tomcat使用。shared 被所有项目使用。web-info下面只能被一共项目访问。

对于 tomcat6版本,为了简化大多数的应用场景将common,server,shared三者合并到了一个文件夹lib里面,相当于以前的common,如果默认设置不能满足可以设置 catalina.properties重新启用老版本设置。

如项目1用user类的时候不应该影响项目2,虽然项目2里面也有user类

比如两个项目都用到了struct的jar包,那么会把struct包分别放在这两个项目当中。这样就会对磁盘产生一些浪费。更好的办法是将jar包放在tomcat里面供两个项目共享。

Tomcat里面有个类叫bootstrap类,项目1里面也有bootstrap类,tomcat运行过程当中要用bootstrap类的时候一定用的是tomcat里面的类,而不是项目1的类。项目1的类不会对tomcat产生任何影响。

Tomcat的jar包都放在lib文件夹里面,这些jar包可以被项目1 2使用。项目的jar包会被放在每个项目的WEB-INF目录下,这个是项目需要的jar包

[root@www lib]# pwd
/usr/local/tomcat/webapps/examples/WEB-INF/lib
[root@www lib]# ls
taglibs-standard-impl-1.2.5.jar  taglibs-standard-spec-1.2.5.jar

这就做到的第一条不同项目的类应该隔离,2,3解决不了,通过catalina.properties可以解决该问题

Tomcat5里面分的很细致,不同的jar包被不同项目使用就需要开启该配置文件

下面定义了目录结构

common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar"
shared.loader=   供所有项目使用
server.loader=

如果你想要一些jar包让tomcat服务使用,那么就放在下面指定的目录

server.loader="${catalina.base}/server"   创建server文件夹,并且放置jar包,供tomcat使用

 

补充


Tomcat的catalina.properties文件位于%CATALINA_HOME%/conf/目录下面,该文件主要配置tomcat的安全设置、类加载设置、不需要扫描的类设置、字符缓存设置四大块。

安全设置

下面是catalina.properties文件中关于安全的设置,如下:

package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper.,sun.beans.
package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper.

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=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar

(1)${catalina.base}/lib主要在下面这些路径中加载:

(2)${catalina.base}/lib/*.jar

(3)${catalina.home}/lib

(4)${catalina.home}/lib/*.jar

${catalina.base}和${catalina.home}的区别请点击查看

3、server.loader 和 shared.loader

在common.loader 加载完后,tomcat启动程序会检查 catalina.properties文件中配置的server.loader和shared.loader是否设置。如果设置,读取 tomcat下对应的server和shared这两个目录的类库。server和shared是对应tomcat目录下的两个目录,在Tomcat7中默认这两个目录是没有的。设置方法如下(这是一个Demo):

server.loader=${catalina.base}/server/classes,${catalina.base}/server/lib/*.jar
shared.loader=${catalina.base}/server/classes,${catalina.base}/server/lib/*.jar

Bootstrap ---> System ---> /WEB-INF/classes ---> /WEB-INF/lib/*.jar ---> Common ---> Server ---> Shared同时需要在tomcat目录下创建 server和shared目录结构并将公用的、应用类放到里面。类加载顺序如下:

字符缓存设置

根据需要设置字符的缓存策略。下面是tomcat的默认配置,如下:

# String cache configuration.
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

默认tomcat将tomcat.util.buf.StringCache.byte.enabled=true开启,其他的被注释了。

小结


Tomcat可以通过catalina.properties的server和shared设置,为webapp提供公用类库。使一些公用的、不需要与webapp放在一起的设置信息单独保存,在更新webapp的war的时候无需更改webapp的设置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值