java - JDBC 驱动程序应该包含在 WAR 中吗?

标签 java servlets jdbc

我们有一个正在开发的商业软件产品。它支持 Oracle、MySQL 和 SQL*Server 后端(我们也使用 H2 进行测试)。我们使用特定版本的 JDBC 驱动程序针对这些不同的数据库进行集成测试。 Maven 可以很好地处理这一切。

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

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

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

目前我们使用 Spring 数据源 bean,但正在为数据源迁移到 JNDI 查找。

最佳答案

So the servlet contains and application servers come with their own JDBC drivers?

有些会(例如 WebLogic)。

Will ours conflict?

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

Another concern is that we have developed and tested with one version of the driver and if a customer uses another version, we may have problems.

有支持版本的列表。

Currently we use Spring data source beans, but are in the process of moving to JNDI lookup for the datasource.

如果您的意思是使用应用服务器提供的连接池,则驱动程序必须安装在容器级别,而不是应用程序级别。这不知何故结束了讨论。

关于java - JDBC 驱动程序应该包含在 WAR 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3770741/

相关文章:

java - Hibernate 是否记录它分配给准备好的 SQL 语句中的占位符的值?

java - 测试我的 Java/Android 应用程序 - 我的设置是否错误?

java - Eclipse Maven 工作区解析看不到生成的类

java - 如何从 Java Servlet 检查请求的文件是否存在于 WEB-INF 中?

带有 Tomcat 的 Eclipse 中的 Java Servlet

java - 从 pubchem 中提取与单同位素质量匹配的 sdf 文件

mysql - 使用 netbeans for jsp 连接 mysql

java - 通过 JDBC 显示多列索引的列名

java - 使用 JDBC 将 Microsoft Access 数据库连接到 Java 并进行编译

java - 来自数据库的动态 Jtree