0

我有两个应用程序 webapp1 和 webapp2。两个应用程序都使用相同的库 zx.jar。现在我把罐子放在两个位置/webapp1/ROOT/WEB-INF/lib/webapp2/ROOT/WEB-INF/lib

但我不想加载 jar 两次。我想用罐子/tomcat/lib

如何在 Linux 环境中实现这一点?

4

3 回答 3

2

将您的图书馆放在以下位置

•Tomcat 6 $CATALINA_HOME/lib   
•Tomcat 5 $CATALINA_HOME/common/lib

更多信息Apache ClassLoader Howto

于 2013-05-25T14:13:36.773 回答
1

只需将您jar的放入 tomcat lib 文件夹 ( $CATALINA_HOME/lib) 中即可。

如果你使用maven作为构建工具,只需放入<scope>provided</scope>相应jar的依赖即可!

如果您使用Ant构建,只需确保jar在构建和部署应用程序时不要将其复制到已部署应用程序的 lib 文件夹中。

于 2013-05-25T14:15:42.957 回答
0

在 Tomcat 6 中,要在多个 servlet 之间共享的“通用”JAR 应该放在$CATALINA_BASE/libor中$CATALINA_HOME/lib。它记录在Apache 6 - Classloader HOW TO文档中。

但是,您在执行此操作时需要小心,因为:

  • “common” JARS 和目录中的其他文件/目录lib优先于每个 webapp 中的内容,
  • “公共”类中的任何静态变量实际上对所有 Web 应用程序都是可见的,并且
  • 从一个 webapp 到另一个 webapp 的类型泄漏会导致奇怪的问题;例如类型转换意外失败。
于 2013-05-25T14:16:11.153 回答