1

我的网络应用程序有一个 .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”目录中。我的应用程序的安装更复杂。

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

感谢帮助!

4

1 回答 1

2

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

在数据库连接的情况下,无论如何,您很可能需要为每个客户定制一个数据库——通过 tomcat 将其作为数据源提供,因此必须配置一次(在第一次安装时),但您无需担心之后关于它。

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

于 2012-12-19T08:56:43.133 回答