处理重复的罐子的最佳做法是什么?

时间:2011-12-30 03:43:35

标签: jar classloader conflict

我将JBPM5.2包含在我现有的项目中。我注意到一些jar文件是重复的。 下面是清单

                        my      jbpm
activation-1.1.jar  1.1 1.1
antlr-2.7.7.jar         2.7.7   2.7.7
Common-collections  2.1 3.1
common-io           1.1 1.4
dom4j-1.6.1.jar         1.6.1   1.6.1
Jdom-1.0.jar            1.0 1.0
Jta.jar                 1.0 1.1
Log4j                   1.2.15  1.2.14
Mail.jar            1.4 1.4

我并不热衷于升级这些jar,因为这意味着我必须对我现有的功能进行彻底的回归测试。基本上我正在寻找一种安全简便的方法。

我认为这是许多人遇到的一个非常普遍的问题。有人可以与我分享他/她的方法来解决这个问题。

2 个答案:

答案 0 :(得分:0)

我能想到的几个选项

  1. 如果您的部署单位是EAR(我不确定这是否适用于您的应用思路)。由于WAR可以拥有自己的类加载器,因此您可以将jar本地化为webapp。阅读这篇文章Java EE class loading standard

  2. 另一种可能性是将JBPM单独部署为单独的应用程序。

  3. 升级罐子(我的偏好):从我所看到的公共 - *是唯一仅在 MINOR 版本中推迟的罐子。所以你不必担心任何事情。您可能需要进行烟雾测试或简单的功能测试。

答案 1 :(得分:0)

那么,你的应用对jbpm有什么样的依赖? jbpm和你的jar会在同一个类加载器下的同一个JVM中吗?如果是这样,你就有问题了。升级是唯一正确的解决方案。

通常,在类似Web应用程序的东西中,例如Tomcat或Jetty,服务器所需的库位于服务器的类路径上。部署的每个Web应用程序都有自己的类加载器。您依赖的库在此类加载器上可用,它不会污染容器本身。