Tomcat 7类加载首选项顺序

时间:2012-08-17 02:58:24

标签: java tomcat classloader

我有以下情况:

一方面,我有一个tomcat实例,其中包含许多需要包含slf4j库的activemq-all.jar的应用程序,所以我已将它部署到lib目录中,它是我不能选择在每个应用程序中包含此jar文件。

另一方面,我需要安装一个我无法控制的监视器应用程序,并附带不同版本的slf4j。

在另一个tomcat实例上运行最后一个应用程序也不是一个选项。

我想配置tomcat的ClassLoader来尝试首先加载webapps上的jar,然后加载lib /目录下的jar。

这可能吗?怎么可以实现?

2 个答案:

答案 0 :(得分:1)

默认情况下,tomcat首先加载Web应用程序类,并为它们提供比自己的lib目录中的类更高的优先级。你可以保持提到的jar是lb文件夹。通常我会推荐catalina_base目录

答案 1 :(得分:0)

将公共广口瓶加载到Common class loader下。默认情况下,公共类加载器在以下位置查找jar:

  • $CATALINA_BASE/lib
  • $CATALINA_HOME/lib

与您的Web应用程序一起打包的任何jar都应该优先于Common类加载器中找到的jar。