11.2. JDBC 驱动程序


在 JBoss EAP 中定义数据源以供您的应用程序使用,您必须首先安装适当的 JDBC 驱动程序。

11.2.1. 将 JDBC 驱动程序安装为核心模块

要将 JDBC 驱动程序安装为核心模块,您必须首先将 JDBC 驱动程序添加为核心模块, 然后在 datasources 子系统中注册 JDBC 驱动程序

11.2.1.1. 将 JDBC 驱动程序添加为核心模块

通过下列步骤,可以使用管理 CLI 将 JDBC 驱动程序安装为核心模块:

  1. 下载 JDBC 驱动程序。

    从您的数据库供应商下载适当的 JDBC 驱动程序。有关通用数据库的 JDBC 驱动程序,请参阅 JDBC 驱动程序下载位置。

    如果 JDBC 驱动程序 JAR 文件包含在 ZIP 或 TAR 存档中,请确保提取存档。

  2. 启动 JBoss EAP 服务器。
  3. 启动管理 CLI。

    $ EAP_HOME/bin/jboss-cli.sh
    Copy to Clipboard Toggle word wrap
  4. 使用 module add 管理 CLI 命令添加新的核心模块。

    [disconnected /] module add --name=MODULE_NAME --resources=PATH_TO_JDBC_JAR --dependencies=DEPENDENCIES
    Copy to Clipboard Toggle word wrap

    Example

    以下命令添加 MySQL JDBC 驱动程序模块:

    [disconnected /] module add --name=com.mysql --resources=/path/to/mysql-connector-j-8.0.33.jar --dependencies=jakarta.transaction.api,java.se,wildflyee.api,java.xml,java.xml.crypto,jdk.xml.dom
    Copy to Clipboard Toggle word wrap

    Example

    要启动管理 CLI 并在单个步骤中添加新的核心模块,请使用以下命令:

    $ EAP_HOME/bin/jboss-cli.sh --command="module add --name=MODULE_NAME --resources=PATH_TO_JDBC_JAR --dependencies=DEPENDENCIES"
    Copy to Clipboard Toggle word wrap
    重要

    使用 module 管理 CLI 命令仅作为技术预览提供和删除模块。此命令不适合在受管域中使用,或者在远程连接到管理 CLI 时。在生产环境中应该手动 添加和删除 模块。

    技术预览功能不包括在红帽生产服务级别协议(SLA)中,且其功能可能并不完善。因此,红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

    如需有关技术预览功能支持范围的信息,请参阅红帽客户门户网站上的 技术预览功能支持范围

    使用此命令添加或删除模块的更多详细信息,执行 模块 --help

接下来,您必须注册它作为 JDBC 驱动程序,才能被应用程序数据源引用。

11.2.1.2. 注册 JDBC 驱动程序

在驱动程序 作为核心模块 安装后,您必须使用以下管理 CLI 命令将其注册为 JDBC 驱动程序:在受管域中运行时,请确保在此命令之前使用 /profile=PROFILE_NAME

/subsystem=datasources/jdbc-driver=DRIVER_NAME:add(driver-name=DRIVER_NAME,driver-module-name=MODULE_NAME,driver-xa-datasource-class-name=XA_DATASOURCE_CLASS_NAME, driver-class-name=DRIVER_CLASS_NAME)
Copy to Clipboard Toggle word wrap
注意

只有 JDBC 驱动程序 jar 在其 /META-INF/services/java.sql.Driver 文件中定义多个类时,才需要 driver-class-name 参数。

例如,MySQL 5.1.36 JDBC 驱动程序 JAR 中的 /META-INF/services/java.sql.Driver 文件定义了两个类:

  • com.mysql.cj.jdbc.Driver
  • com.mysql.fabric.jdbc.FabricMySQLDriver

在这种情况下,您将传递 driver-class-name=com.mysql.cj.jdbc.Driver

例如,以下命令注册 MySQL JDBC 驱动程序:

/subsystem=datasources/jdbc-driver=mysql:add(driver-name=mysql,driver-module-name=com.mysql,driver-xa-datasource-class-name=com.mysql.cj.jdbc.MysqlXADataSource, driver-class-name=com.mysql.cj.jdbc.Driver)
Copy to Clipboard Toggle word wrap

JDBC 驱动程序现在可供应用数据源引用。

11.2.2. 将 JDBC 驱动程序安装为 JAR 部署

使用管理 CLI 或管理控制台,可以将 JDBC 驱动程序安装为 JAR 部署。只要驱动程序符合 JDBC 4,它将在部署时自动识别并安装为 JDBC 驱动程序。

下列步骤介绍了如何使用管理 CLI 安装 JDBC 驱动程序。

注意

JDBC 驱动程序的建议安装方法是将它们安装为 核心模块

  1. 下载 JDBC 驱动程序。

    从您的数据库供应商下载适当的 JDBC 驱动程序。有关通用数据库的 JDBC 驱动程序,请参阅 JDBC 驱动程序下载位置。

    如果 JDBC 驱动程序 JAR 文件包含在 ZIP 或 TAR 存档中,请确保提取存档。

  2. 如果 JDBC 驱动程序与 JDBC 4 不兼容,请参阅 更新 JDBC 驱动程序 JAR 的步骤为 JDBC 4-Compliant
  3. 将 JAR 部署到 JBoss EAP。

    deploy PATH_TO_JDBC_JAR
    Copy to Clipboard Toggle word wrap
    注意

    在受管域中,指定适当的服务器组。

    例如,以下命令部署 MySQL JDBC 驱动程序:

    deploy /path/to/mysql-connector-j-8.0.33.jar
    Copy to Clipboard Toggle word wrap

    JBoss EAP 服务器日志中会显示一条消息,其中显示部署的驱动程序名称,该名称将在定义数据源时使用。

    WFLYJCA0018: Started Driver service with driver-name = mysql-connector-j-8.0.33.jar
    Copy to Clipboard Toggle word wrap

JDBC 驱动程序现在可供应用数据源引用。

将 JDBC 驱动程序 JAR 更新为 JDBC 4 兼容

如果 JDBC 驱动程序 JAR 不兼容 JDBC 4,则可通过下列步骤进行可部署资源:

  1. 创建一个空临时目录。
  2. 创建 META-INF 子目录。
  3. 创建 META-INF/services 子目录。
  4. 创建 META-INF/services/java.sql.Driver 文件,并添加一行来指示 JDBC 驱动程序的完全限定域名。

    例如,将为 MySQL JDBC 驱动程序添加下面这行:

    com.mysql.cj.jdbc.Driver
    Copy to Clipboard Toggle word wrap
  5. 使用 JAR 命令行工具将此新文件添加到 JAR。

    jar \-uf jdbc-driver.jar META-INF/services/java.sql.Driver
    Copy to Clipboard Toggle word wrap

11.2.3. JDBC 驱动程序下载位置

下表提供了用于 JBoss EAP 的通用数据库的 JDBC 驱动程序的标准下载位置。

注意

这些链接指向不是由红帽控制或主动监控的第三方网站。有关您的数据库的最新驱动程序,请查看您的数据库厂商的文档和网站。

Expand
表 11.1. JDBC 驱动程序下载位置
Vendor下载位置

MySQL

http://www.mysql.com/products/connector/

PostgreSQL

http://jdbc.postgresql.org/

Oracle

http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html

IBM

http://www-01.ibm.com/support/docview.wss?uid=swg21363866

Sybase

jConnect JDBC 驱动程序是 SAP ASE 安装的 SDK 的一部分。目前,这个驱动程序本身没有单独的下载站点。

Microsoft

http://msdn.microsoft.com/data/jdbc/

11.2.4. 访问特定于供应商的类

在某些情况下,应用需要使用不属于 JDBC API 的特定于供应商的功能。在这些情况下,您可以通过在该应用程序中声明依赖项来访问特定于供应商的 API。

警告

这是高级用法。只有 JDBC API 中没有功能的应用程序才应实施此流程。

重要

在使用重新身份验证机制和访问特定供应商的类时,需要这个过程。

您可以使用 MANIFEST.MF 文件或 jboss-deployment-structure.xml 文件为应用程序定义依赖项。

如果您尚未这样做,请将 JDBC 驱动程序安装为核心模块

使用 MANIFEST.MF 文件
  1. 编辑应用的 META-INF/MANIF 文件
  2. 添加 Dependencies 行并指定模块名称。

    例如,以下行将 com.mysql 模块声明为依赖项。

    Dependencies: com.mysql
    Copy to Clipboard Toggle word wrap
使用 jboss-deployment-structure.xml 文件
  1. 在应用的 META-INF/WEB-INF/ 文件夹中创建名为 jboss-deployment-structure.xml 的文件。
  2. 使用 dependencies 元素指定模块。

    例如,以下示例 jboss-deployment-structure.xml 文件声明 com.mysql 模块作为依赖项。

    <jboss-deployment-structure>
      <deployment>
        <dependencies>
          <module name="com.mysql"/>
        </dependencies>
      </deployment>
    </jboss-deployment-structure>
    Copy to Clipboard Toggle word wrap

以下示例代码访问 MySQL API。

import java.sql.Connection;
...
Connection c = ds.getConnection();
if (c.isWrapperFor(com.mysql.jdbc.Connection.class)) {
    com.mysql.jdbc.Connection mc = c.unwrap(com.mysql.jdbc.Connection.class);
}
Copy to Clipboard Toggle word wrap
重要

仔细遵循特定于供应商的 API 指南,因为连接由 IronJacamar 容器控制。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat