tomcat设定shared lib共享一样的jar

在项目愈来愈多的时候,部署在tomcat的发布包也会愈来愈多,这样不免有不少相同的jar会被加载,占用大量的永久存续区内存,经过设定shared lib来控制相同的jar只加载一个,这样有如下好处:web

一、避免不一样项目加载相同的jar,减小对永久存续区的内存占用tomcat

二、提升tomcat的启动速度,由于少加载了许多重复的jarapp

1、如何设定shared lib

方式一:webapp

修改conf文件下的catalina.properties文件,配置shared.loader的路径:spa

配置绝对路径:code

shared.loader="D:hs/develop/shared/lib","D:/hs/develop/shared/lib/*.jar"

以后将相同的jar放在指定的文件夹下。server

或配置相对路径:blog

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

以后在和conf同目录下新建shared目录,将相同的jar放在lib里内存

方式二:ssl

修改conf文件下的catalina.properties文件,配置common.loader的路径,追加shared lib的路径:

common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar","${catalina.home}/lib/shared/*.jar"

以后在lib文件夹下新建一个shared目录,并将相同的jar放在shared目录下

2、catalina.home和catalina.base的区别

在一个tomcat下,catalina.home和catalina.base指向相同的位置,即bin等目录的父目录。

如果在安装多个Tomcat实例又不想安装多个软件备份的时可使用这两个属性,在tomcat目录下只有 bin 和 lib 目录被多个tomcat示例公用,其它目录conf、logs、temp、webapps和work 是每一个Tomcat实例本身独立的备份。这时他们指向不一样的位置:

  • catalina.home(安装目录):指向公用信息的位置,就是bin和lib的父目录。
  • catalina.base(工做目录):指向每一个Tomcat目录私有信息的位置,就是conf、logs、temp、webapps和work的父目录。

3、tomcat6类加载机制

Commonclassloader:负责装载$CATALINA_HOME/common目录下的全部类和jar包,详细的配置可参考$CATALINA_HOME/conf/catalina.properties文件中的common.loader配置;该classloader装载的类对于Server class loader和Webapp class loader是可见的;Commonclass loader在Tomcat启动时建立,其parent classloader是System class loader;

Server classloader:负责装载Tomcat的核心类,位于$CATALINE_HOME/server目录下的全部类和jar,可由catalina.propreties中的server.loader配置指定;它在Tomcat启动时被建立,其parent loader是Commonclass loader;

Sharedclass loader:负责装载webapp公用的类,能够用户经过catalina.properties文件中的shared.loader属性来指定;它在Tomcat启动时被建立,其parentloader也是Common class loader;

Webappclassloader:它只负责加载各自app中WEB-INF/classes以及WEB-INF/lib下的类;其parentloader虽然是Shared class loader,但其加载策略和默认的类加载机制不太同样;

相关文章
相关标签/搜索