我有以下情况:
一方面,我有一个tomcat实例,其中包含许多需要包含slf4j库的activemq-all.jar的应用程序,所以我已将它部署到lib目录中,它是我不能选择在每个应用程序中包含此jar文件。
另一方面,我需要安装一个我无法控制的监视器应用程序,并附带不同版本的slf4j。
在另一个tomcat实例上运行最后一个应用程序也不是一个选项。
我想配置tomcat的ClassLoader来尝试首先加载webapps上的jar,然后加载lib /目录下的jar。
这可能吗?怎么可以实现?
答案 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。