繁体   English   中英

JDBC驱动程序是否应包含在WAR中?

[英]Should JDBC drivers be included in a WAR?

我们正在开发一种商业软件产品。 它支持Oracle,MySQL和SQL * Server后端(我们也使用H2进行测试)。 我们使用特定版本的JDBC驱动程序对这些不同的数据库进行集成测试。 Maven处理这一切都非常漂亮。

将应用程序打包为WAR时,如果我们包含JDBC驱动程序是否可以? 什么是标准做法?

由于我们不知道哪个数据库可以提前使用,因此我们必须将它们全部包含在内。 目标servlet容器是Tomcat和Jetty,但是一些客户也希望在WebSphere和JBoss中运行。

那么servlet包含和应用程序服务器自带的JDBC驱动程序? 我们会发生冲突吗 另一个问题是我们已经开发并测试了一个版本的驱动程序,如果客户使用其他版本,我们可能会遇到问题。

目前我们使用Spring数据源bean,但正在转向数据源的JNDI查找。

那么servlet包含和应用程序服务器自带的JDBC驱动程序?

有些人(例如WebLogic)。

我们会发生冲突吗

他们不应该。 不确定在应用程序级别创建独立连接池时会选择您的(这完全取决于类加载器委派模式)。

另一个问题是我们已经开发并测试了一个版本的驱动程序,如果客户使用其他版本,我们可能会遇到问题。

有一个支持的版本列表。

目前我们使用Spring数据源bean,但正在转向数据源的JNDI查找。

如果这意味着使用应用程序服务器提供的连接池,则必须在容器级别而不是在应用程序级别安装驱动程序。 这以某种方式结束了讨论。

在大多数应用程序中,JDBC驱动程序不作为应用程序的一部分提供。

如果您运送JDBC驱动程序,则意味着您必须为要支持的所有数据库提供驱动程序。 它添加了许多不必要的库。

只是不添加任何驱动程序,并告诉用户在需要时将相关的JAR文件放在服务器库中。

除了在war文件中包含驱动程序的技术优点之外,您还应检查驱动程序的许可,并确保它可由第三方分发。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM