zoukankan      html  css  js  c++  java
  • tomcat设定shared lib共享同样的jar

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

    1、避免不同项目加载相同的jar,减少对永久存续区的内存占用

    2、提高tomcat的启动速度,因为少加载了许多重复的jar

    一、如何设定shared lib

    方式一:

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

    配置绝对路径:

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

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

    或配置相对路径:

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

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

    方式二:

    修改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目录下

    二、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的父目录。

    三、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,但其加载策略和默认的类加载机制不太一样;

  • 相关阅读:
    mac os programming
    Rejecting Good Engineers?
    Do Undergrads in MIT Struggle to Obtain Good Grades?
    Go to industry?
    LaTex Tricks
    Convert jupyter notebooks to python files
    How to get gradients with respect to the inputs in pytorch
    Uninstall cuda 9.1 and install cuda 8.0
    How to edit codes on the server which runs jupyter notebook using your pc's bwroser
    Leetcode No.94 Binary Tree Inorder Traversal二叉树中序遍历(c++实现)
  • 原文地址:https://www.cnblogs.com/kingsonfu/p/11360383.html
Copyright © 2011-2022 走看看