我的网络应用程序中有一个.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”目录。这样安装我的应用程序就更复杂了。
也许还有其他方法可以解决这个问题?在我的应用程序中使用反射或其他方式以编程方式执行它会很棒。
感谢您的帮助!
答案 0 :(得分:2)
恕我直言,您给出的示例(数据库驱动程序)的最佳实践是通过tomcat提供数据源。这意味着数据库驱动程序jar需要位于全局类路径(tomcat/lib
)中。这也可以保证您为所有客户提供相同的.war文件 - 当您更新此文件时,您只需要为所有用户提供相同的文件。
在数据库连接的情况下,您很可能还需要为每个客户提供一个自定义数据库 - 通过tomcat将其作为数据源提供,因此需要对其进行一次配置(在首次安装时),但您不会之后需要担心它。
如果数据库驱动程序不是您唯一的问题,请使用更多不同环境/罐子的示例更新您的问题。