如何在部署到tomcat之前(或期间)在.war文件中管理库版本?

时间:2012-12-19 08:51:18

标签: java tomcat deployment war dependency-management

我的网络应用程序中有一个.war文件。问题的根源是我想为所有客户(具有不同环境)保留一个.war文件。为此,我应该在.war中保留不同版本的库,并决定在部署时使用哪些库。

例如:

第一个客户有oracle 10,第二个有oracle 11.我希望在我的战争中保留两个ojdbc.jar文件,并根据属性文件中的某些参数选择使用哪些文件。

解决此问题的一个解决方案是编写自己的ClassLoader,它不会加载无用的文件(如下所示:https://serverfault.com/questions/317901/tomcat-possible-to-exclude-jars-during-app-deployment)。

问题是我们的ClassLoader类应该进入“tomcat \ lib”目录。这样安装我的应用程序就更复杂了。

也许还有其他方法可以解决这个问题?在我的应用程序中使用反射或其他方式以编程方式执行它会很棒。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

恕我直言,您给出的示例(数据库驱动程序)的最佳实践是通过tomcat提供数据源。这意味着数据库驱动程序jar需要位于全局类路径(tomcat/lib)中。这也可以保证您为所有客户提供相同的.war文件 - 当您更新此文件时,您只需要为所有用户提供相同的文件。

在数据库连接的情况下,您很可能还需要为每个客户提供一个自定义数据库 - 通过tomcat将其作为数据源提供,因此需要对其进行一次配置(在首次安装时),但您不会之后需要担心它。

如果数据库驱动程序不是您唯一的问题,请使用更多不同环境/罐子的示例更新您的问题。