13.2. JDBC 驱动程序
在 JBoss EAP 中定义供应用程序使用的数据源之前,您必须首先安装适当的 JDBC 驱动程序。
13.2.1. 将 JDBC 驱动程序安装为核心模块
可以使用管理 CLI 将 JDBC 驱动程序作为核心模块安装,并执行下列步骤。
下载 JDBC 驱动程序。
从您的数据库供应商下载适当的 JDBC 驱动程序。有关通用数据库的 JDBC 驱动程序的标准下载位置,请参阅 JDBC 驱动程序下载位置。
如果 JDBC 驱动程序 JAR 文件包含在 ZIP 或 TAR 归档中,请确保提取存档。
- 启动 JBoss EAP 服务器。
启动管理 CLI,但不使用
--connect
或-c
参数连接正在运行的实例。$ EAP_HOME/bin/jboss-cli.sh
使用
module add
management CLI 命令来添加新的核心模块。module add --name=MODULE_NAME --resources=PATH_TO_JDBC_JAR --dependencies=DEPENDENCIES
例如,以下命令添加了 MySQL JDBC 驱动程序模块:
module add --name=com.mysql --resources=/path/to/mysql-connector-java-5.1.36-bin.jar --dependencies=javax.api,javax.transaction.api
重要执行
module --help
以了解有关使用这个命令添加和删除模块的更多详细信息。使用
连接
管理 CLI 命令连接正在运行的实例。connect
注册 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)
注意只有 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.jdbc.Driver
- com.mysql.fabric.jdbc.FabricMySQLDriver
在本例中,您将传递
driver-class-name=com.mysql.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.jdbc.jdbc2.optional.MysqlXADataSource, driver-class-name=com.mysql.jdbc.Driver)
JDBC 驱动程序现在可供应用数据源引用。
13.2.2. 安装 JDBC 驱动程序作为 JAR 部署
JDBC 驱动程序可以使用管理 CLI 或管理控制台作为 JAR 部署安装。只要驱动程序兼容 JDBC 4,它将在部署时自动识别并安装为 JDBC 驱动程序。
下列步骤描述了如何使用管理 CLI 安装 JDBC 驱动程序。
推荐的 JDBC 驱动程序安装方法是将它们安装为核心模块。???
下载 JDBC 驱动程序。
从您的数据库供应商下载适当的 JDBC 驱动程序。有关通用数据库的 JDBC 驱动程序的标准下载位置,请参阅 JDBC 驱动程序下载位置。
如果 JDBC 驱动程序 JAR 文件包含在 ZIP 或 TAR 归档中,请确保提取存档。
- 如果 JDBC 驱动程序不兼容 JDBC 4,请参见将 JDBC 驱动程序 JAR 更新为 JDBC 4-Compliant 的步骤。
将 JAR 部署到 JBoss EAP。
deploy PATH_TO_JDBC_JAR
注意在受管域中,指定适当的服务器组。
例如,以下命令部署 MySQL JDBC 驱动程序:
deploy /path/to/mysql-connector-java-5.1.36-bin.jar
JBoss EAP 服务器日志中将显示一条消息,其中显示了部署的驱动程序名称,该名称将在定义数据源时使用。
WFLYJCA0018: Started Driver service with driver-name = mysql-connector-java-5.1.36-bin.jar_com.mysql.jdbc.Driver_5_1
JDBC 驱动程序现在可供应用数据源引用。
更新 JDBC 驱动程序 JAR,使其 JDBC 4-Compliant
如果 JDBC 驱动程序 JAR 不兼容 JDBC 4,则可以按照以下流程部署它。
- 创建一个空临时目录。
-
创建
META-INF
子目录。 -
创建
META-INF/services
子目录。 创建一个
META-INF/services/java.sql.Driver
文件,再添加一行来指示 JDBC 驱动程序的完全限定域名。例如,为 MySQL JDBC 驱动程序添加以下行:
com.mysql.jdbc.Driver
使用 JAR 命令行工具将此新文件添加到 JAR。
jar \-uf jdbc-driver.jar META-INF/services/java.sql.Driver
13.2.3. JDBC 驱动程序下载位置
下表提供了用于 JBoss EAP 的通用数据库的 JDBC 驱动程序的标准下载位置。
这些链接指向不受红帽控制或主动监控的第三方网站。有关数据库的最新驱动程序,请查看您的数据库厂商的文档和网站。
Vendor | 下载位置 |
---|---|
MySQL | |
PostgreSQL | |
Oracle | http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html |
IBM | |
Sybase | jConnect JDBC 驱动程序是 SAP ASE 安装的 SDK 的一部分。目前,没有单独的下载站点用于这个驱动程序。 |
Microsoft |
13.2.4. 访问特定于供应商的类
在某些情况下,应用需要使用不属于 JDBC API 的特定供应商功能。在这些情况下,您可以通过声明该应用中的依赖项来访问特定于供应商的 API。
这是高级使用。只有需要 JDBC API 中没有的功能的应用程序才应实施此流程。
使用 reauthentication 机制和访问特定于供应商的类时,需要这个过程。
您可以使用 MANIFEST.MF
文件或 jboss-deployment-structure.xml
文件为应用程序定义依赖项。
如果您还没有这样做,请将 JDBC 驱动程序安装为核心模块。
使用 MANIFEST.MF
文件
-
编辑应用程序的
META-INF/MANIFEST.MF
文件。 添加
Dependencies
行并指定模块名称。例如,以下行将
com.mysql
模块声明为依赖项。Dependencies: com.mysql
使用 jboss-deployment-structure.xml
文件
-
在应用的
META-INF/
或WEB-INF/
文件夹中创建一个名为jboss-deployment-structure.xml
的文件。 使用
dependencies
元素指定模块。例如,以下
jboss-deployment-structure.xml
文件示例将com.mysql
模块声明为依赖项。<jboss-deployment-structure> <deployment> <dependencies> <module name="com.mysql"/> </dependencies> </deployment> </jboss-deployment-structure>
以下示例代码访问 MySQL API。
import java.sql.Connection; import org.jboss.jca.adapters.jdbc.WrappedConnection; ... Connection c = ds.getConnection(); WrappedConnection wc = (WrappedConnection)c; com.mysql.jdbc.Connection mc = wc.getUnderlyingConnection();
遵循特定于供应商的 API 指南,因为连接是由 IronJacamar 容器控制的。