第 13 章 数据源管理
13.1. 关于 JBoss EAP 数据源
关于 JDBC
JDBC API 是一个标准,它定义了 Java 应用程序如何访问数据库。一个应用程序需要配置一个数据源(datasource)来指代一个 JDBC 驱动,然后,应用程序代码就可以对驱动进行写操作,而不需要直接对数据库进行写操作。驱动会把相应的代码转换为数据库的语言。这意味着,通过安装正确的驱动,应用程序可以使用任何支持的数据库。
更多信息请参考 JDBC 4.0 规格。
支持的数据库
关于 JBoss EAP 7 支持的兼容 JDBC 的数据库的列表,请参考 JBoss EAP 支持的配置。
数据源类型
数据源一般被分为两类:非 XA 数据源和XA 数据源。
- 非 XA 数据源
- 用于不使用事务的应用程序,或者使用的事务只有一个数据库的应用程序。
- XA 数据源
- 将多个数据库或其他 XA 资源作为 XA 事务的一部分使用的应用程序会使用它。XA 数据源会导致额外的负荷。
当使用 JBoss EAP 管理接口创建数据源时,您需要指定所用的数据源类型。
ExampleDS 数据源
JBoss EAP 附带了数据源配置示例(ExampleDS),它演示了如何定义数据源。这个数据源使用一个 H2 数据库,它是一个轻量级关系数据库管理系统,为开发人员提供了快速构建应用程序的功能。
ExampleDS 数据源和 H2 数据库不应该用在生产环境里。这是一个非常小的、自包容的数据源,它支持所有测试和构建应用程序所需的标准,但对于生产环境,它不够稳定且扩展性不强。
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管理 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
重要Using the
modulemanagement CLI command to add and remove modules is provided as technology preview only. This command is not appropriate for use in a managed domain or when connecting to the management CLI remotely. Modules should be added and removed manually in a production environment.关于使用这个命令添加或删除模块的详情,请执行
module --help。使用
connect管理 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)
注意driver-class-name参数只有在 JDBC 驱动 JAR 在其/META-INF/services/java.sql.Driver文件里定义了多个类时才需要。例如,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 里的步骤。
部署 JAR 至 JBoss EAP。
部署 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
如果 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 驱动的标准下载位置。
这些链接指向不受红帽控制的第三方网站。如需获得数据库的最新驱动,请访问相关厂商的文档和网站。
表 13.1. JDBC 驱动的下载位置
| 提供商 | 下载位置 |
|---|---|
|
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 里没有的功能时才执行这个操作。
当使用重验证机制,并访问厂商的专有类时,需要执行这个操作。
您可以用 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 容器所控制的。
13.3. 创建数据源
数据源可以用管理控制台或管理 CLI 来创建。
JBoss EAP 7 允许您在数据源属性值里使用表达式,例如 enabled 属性。关于在配置里使用表达式的细节,请参考属性替换章节。
13.3.1. 创建非 XA 数据源
非 XA 数据源可以用 data-source add 管理 CLI 命令来定义。您也可以用管理控制台定义非 XA 数据源,请选择 Configuration → Subsystems → Datasources → Non-XA 并点击 Add 打开 Create Datasource 向导。
下面的步骤描述了如何用管理 CLI 定义非 XA 数据源。
- 如果您还没有这样做,请将 JDBC 驱动安装和注册为核心模块。
请用
data-source add命令定义数据源,并指定合适的参数值。data-source add --name=DATASOURCE_NAME --jndi-name=JNDI_NAME --driver-name=DRIVER_NAME --connection-url=CONNECTION_URL
注意在受管域里,您必须指定 --profile=PROFILE_NAME 参数。
关于这些参数值的详情,请参考下面的数据源参数章节。
关于详细的例程,请参考数据源配置示例。
数据源参数
- jndi-name
-
数据源的 JNDI 名称必须以
java:/或java:jboss/开始。例如,java:jboss/datasources/ExampleDS。 - driver-name
驱动名称的值取决于 JDBC 驱动是否被安装为核心模块或 JAR 部署。
- 对于核心模块,驱动名的值将是注册时赋予 JDBC 驱动的名称。
对于 JAR 部署,如果
/META-INF/services/java.sql.Driver文件里只列出了一个类,驱动名就是 JAR 的名称。如果列出了多个类,那它的值是 JAR_NAME + "_" + DRIVER_CLASS_NAME + "_" + MAJOR_VERSION + "_" + MINOR_VERSION(例如mysql-connector-java-5.1.36-bin.jar_com.mysql.jdbc.Driver_5_1)。当部署 JDBC JAR 时,您也可以在 JBoss EAP 服务器日志里查看驱动名称。
WFLYJCA0018: Started Driver service with driver-name = mysql-connector-java-5.1.36-bin.jar_com.mysql.jdbc.Driver_5_1
- connection-url
- 关于受支持的数据库的连接 URL 格式的细节,请参考数据源连接 URL 列表。
关于所有可用的数据源参数的完整列表,请参考数据源参数章节。
13.3.2. 创建 XA 数据源
XA 数据源可以用 xa-data-source add 管理 CLI 命令来定义。您也可以用管理控制台定义 XA 数据源,请选择 Configuration → Subsystems → Datasources → XA 并点击 Add 打开 Create XA Datasource 向导。
下面的步骤描述了如何用管理 CLI 定义 XA 数据源。
在受管域里,您需要指定使用的配置集。根据管理 CLI 命令的格式,您要么在命令前使用 /profile=PROFILE_NAME,要么传入 --profile=PROFILE_NAME 参数。
- 如果您还没有这样做,请将 JDBC 驱动安装和注册为核心模块。
请用
xa-data-source add命令定义数据源,并指定合适的参数值。xa-data-source add --name=XA_DATASOURCE_NAME --jndi-name=JNDI_NAME --driver-name=DRIVER_NAME --xa-datasource-class=XA_DATASOURCE_CLASS --xa-datasource-properties={"ServerName"=>"HOSTNAME","DatabaseName"=>"DATABASE_NAME"}关于这些参数值的详情,请参考下面的数据源参数一节。
设置 XA 数据源属性。
当定义 XA 数据源时要求至少有一个 XA 数据源属性,否则您在添加它时会遇到错误。任何在定义 XA 数据源时没有设置的属性都可以在之后单独进行设置。
设置服务器名称。
/subsystem=datasources/xa-data-source=XA_DATASOURCE_NAME/xa-datasource-properties=ServerName:add(value=HOSTNAME)
设置数据库名称。
/subsystem=datasources/xa-data-source=XA_DATASOURCE_NAME/xa-datasource-properties=DatabaseName:add(value=DATABASE_NAME)
关于详细的例程,请参考数据源配置示例。
数据源参数
- jndi-name
-
数据源的 JNDI 名称必须以
java:/或java:jboss/开始。例如,java:jboss/datasources/ExampleDS。 - driver-name
驱动名称的值取决于 JDBC 驱动是否被安装为核心模块或 JAR 部署。
- 对于核心模块,驱动名的值将是注册时赋予 JDBC 驱动的名称。
对于 JAR 部署,如果
/META-INF/services/java.sql.Driver文件里只列出了一个类,驱动名就是 JAR 的名称。如果列出了多个类,那它的值是 JAR_NAME + "_" + DRIVER_CLASS_NAME + "_" + MAJOR_VERSION + "_" + MINOR_VERSION(例如mysql-connector-java-5.1.36-bin.jar_com.mysql.jdbc.Driver_5_1)。当部署 JDBC JAR 时,您也可以在 JBoss EAP 服务器日志里查看驱动名称。
WFLYJCA0018: Started Driver service with driver-name = mysql-connector-java-5.1.36-bin.jar_com.mysql.jdbc.Driver_5_1
- xa-datasource-class
-
为
javax.sql.XADataSource类的 JDBC 驱动实现指定 XA 数据源类。 - -properties
- 当定义 XA 数据源时要求至少有一个 XA 数据源属性,否则您在添加它时会遇到错误。在定义之后可以在 XA 数据源里添加其他的属性。
关于所有可用的数据源参数的完整列表,请参考数据源参数章节。
13.4. 修改数据源
使用管理控制台或管理 CLI 可以修改数据源。
JBoss EAP 7 允许您在数据源属性值里使用表达式,例如 enabled 属性。关于在配置里使用表达式的细节,请参考属性替换章节。
13.4.1. 修改非 XA 数据源
非 XA 数据源设置可以用 data-source 管理 CLI 命令更新。您也可以从管理控制台的 datasources 子系统里更新数据源属性。
非 XA 数据源可以与 JTA 事务集成。要继承数据源和 JTA,请确保 jta 参数被设置为 true。
数据源的设置可以用下列管理 CLI 命令来更新。
data-source --name=DATASOURCE_NAME --ATTRIBUTE_NAME=ATTRIBUTE_VALUE
在受管域里,您必须指定 --profile=PROFILE_NAME 参数。
要使更新生效,必须重新启动服务器。
13.4.2. 修改 XA 数据源
XA 数据源设置可以用 xa-data-source 管理 CLI 命令更新。您也可以从管理控制台的 datasources 子系统里更新数据源属性。
XA 数据源的设置可以用下列管理 CLI 命令来更新。
xa-data-source --name=XA_DATASOURCE_NAME --ATTRIBUTE_NAME=ATTRIBUTE_VALUE
注意在受管域里,您必须指定
--profile=PROFILE_NAME参数。XA 数据源属性可以用下列管理 CLI 命令来更新。
/subsystem=datasources/xa-data-source=XA_DATASOURCE_NAME/xa-datasource-properties=PROPERTY:add(value=VALUE)
注意在受管域里,您必须在这个命令之前使用
/profile=PROFILE_NAME。
要使更新生效,必须重新启动服务器。
13.5. 删除数据源
数据源可以用管理控制台或管理 CLI 来删除。
13.5.1. 删除非 XA 数据源
您可以用 data-source remove 管理 CLI 命令删除非 XA 数据源。您可以在管理控制台的 datasources 子系统里删除非 XA 数据源。
data-source remove --name=DATASOURCE_NAME
在受管域里,您必须指定 --profile=PROFILE_NAME 参数。
删除数据源后要求重启服务器。
13.5.2. 删除 XA 数据源
您可以用 xa-data-source remove 管理 CLI 命令删除 XA 数据源。您可以在管理控制台的 datasources 子系统里删除 XA 数据源。
xa-data-source remove --name=XA_DATASOURCE_NAME
在受管域里,您必须指定 --profile=PROFILE_NAME 参数。
删除 XA 数据源后要求重启服务器。
13.6. 测试数据源连接
一旦在 JBoss EAP 里添加了数据源,您可以测试连接以检验设置是否正确。数据源连接可以用管理 CLI 命令或管理控制台的 datasources 子系统里的 Test Connection 按钮进行测试。
您可以使用下列管理 CLI 命令来测试数据源连接。
/subsystem=datasources/data-source=DATASOURCE_NAME:test-connection-in-pool
在受管域里,您必须在这个命令之前使用 /host=HOSTNAME/server=SERVER_NAME。
13.7. XA 数据源的恢复
XA 数据源就是一个可以参与到一个 XA 全局事务中的数据源,它由事务管理器(transaction manager)进行协调,并可以在一个事务中分散到多个资源。如果其它的一个参与者无法提供它的改变,其它参与者会终止这个事务,并把它们的状态恢复到事务发生以前的状态。这么做的目的是,维护数据的一致性,并避免潜在的数据丢失或破坏。
XA 恢复(XA recovery)是一个过程,它确保了受一个事务影响的所有资源都会被更新或回滚,即使任何资源或事务参与者崩溃或无法访问。XA 恢复不需要用户的干涉。
每个 XA 资源都需要一个和它的配置相关联的恢复模块。这个模块包括了在恢复发生时需要执行的代码。JBoss EAP 会自动为 JDBC XA 资源注册恢复模块。如果需要执行自定义的恢复代码,则需要在 XA 数据源中注册一个自定义的模块。恢复模块需要扩展类 com.arjuna.ats.jta.recovery.XAResourceRecovery。
13.7.1. 配置 XA 恢复
对于多数的 JDBC 资源,恢复模块会自动和资源关联。此时,您只需要配置允许恢复模块连接资源以执行恢复的选项。
下表描述了 XA 恢复专有的 XA 数据源参数。这些配置属性都可以在数据源创建期间或之后进行设置。您可以用管理控制台或管理 CLI 命令来设置它们。关于配置 XA 数据源的信息,请参考修改 XA 数据源。
表 13.2. XA 恢复的数据源参数
| 属性 | 描述 |
|---|---|
|
recovery-username |
连接恢复资源所使用的用户名称。请注意如果没有指定,将使用数据源安全设置。 |
|
recovery-password |
连接恢复资源所使用的密码。请注意如果没有指定,将使用数据源安全设置。 |
|
recovery-security-domain |
连接用于恢复的资源时使用的安全域。 |
|
recovery-plugin-class-name |
如果您需要使用自定义的恢复模块,请将这个属性设置为模块的全限定类名。这个模块必须继承 |
|
recovery-plugin-properties |
如果您使用了要求设置属性的自定义模块,请将这个属性设置为用逗号隔开的 |
禁用 XA 恢复
如果多个 XA 数据源连接至相同的物理数据库,那 XA 恢复通常都需要对其中一个进行配置。
使用下列管理 CLI 命令来禁用 XA 数据源的恢复。
/subsystem=datasources/xa-data-source=XA_DATASOURCE_NAME:write-attribute(name=no-recovery,value=true)
13.7.2. 厂商专有的 XA 恢复
厂商专有的配置
某些数据库要求专门的配置与 JBoss EAP 事务管理者管理的 XA 事务进行协作。如需了解最新的相关信息,请参考数据库厂商的文档。
- MySQL
- 这里不要求特殊的配置。更多的信息请参考 MySQL 文档。
- PostgreSQL 和 Postgres Plus Advanced Server
-
要使 PostgreSQL 可以处理 XA 事务,把配置参数
max_prepared_transactions设置为一个大于0并大于或等于max_connections的值。 - Oracle
请确保 Oracle 用户 (
USER) 具有对恢复所需的表的访问权限。GRANT SELECT ON sys.dba_pending_transactions TO USER; GRANT SELECT ON sys.pending_trans$ TO USER; GRANT SELECT ON sys.dba_2pc_pending TO USER; GRANT EXECUTE ON sys.dbms_xa TO USER;
如果 Oracle 用户没有正确的权限,您可能会遇到这样的错误信息:
WARN [com.arjuna.ats.jta.logging.loggerI18N] [com.arjuna.ats.internal.jta.recovery.xarecovery1] Local XARecoveryModule.xaRecovery got XA exception javax.transaction.xa.XAException, XAException.XAER_RMERR
- Microsoft SQL 服务器
- 如需了解更多信息,请参考 Microsoft SQL 服务器文档,包括 http://msdn.microsoft.com/en-us/library/aa342335.aspx。
- IBM DB2
- 这里不要求特殊的配置。更多的信息请参考 IBM DB2 文档。
- Sybase
Sybase 需要 XA 事务在数据库中启用。如果没有正确的数据库设置,XA 事务将无法正常工作。使用
enable xact coordination参数可以启用或禁用 Adaptive Server 事务协调服务。当启用这个参数时,Adaptive Server 会确保,在远程 Adaptive Server 数据提交或回滚时,使用原始事务进行更新。要启用事务协调,请使用:
sp_configure 'enable xact coordination', 1
- MariaDB
- 这里不要求特殊的配置。更多的信息请参考 MariaDB 文档。
已知问题
这些与处理 XA 事务相关的已知问题是针对于 JBoss EAP 7 支持的特定数据库和 JDBC 驱动版本的。如需了解支持数据库的最新信息,请参考JBoss EAP 支持的配置。
- MySQL
- MySQL 并不能完全处理 XA 事务。如果客户端断开与 MySQL 的连接,那么事务的所有信息都会丢失。详情请参考 MySQL 程序错误。请注意 MySQL 5.7 已修复了这个问题。
- PostgreSQL 和 Postgres Plus Advanced Server
在二阶段提交(2PC)的提交阶段发生网络故障时,JDBC 驱动会返回
XAER_RMERRXAException 错误代码。这个错误代表了事务管理器的一个不可恢复的严重事件,但在数据库端,这个事务会处于in-doubt状态,并在网络连接重新建立后可以容易地进行修复。正确的返回错误代码应该是XAER_RMFAIL或XAER_RETRY。不正确的错误代码会导致事务在 JBoss EAP 中处于Heuristic状态,并会在数据库中被锁定,需要手工干预才可以解决这个问题。如需了解更多相关信息,请参阅 PostgreSQL bug。如果在使用一阶段提交时出现连接错误,JDBC 驱动会返回
XAER_RMERR,但正确的错误返回代码应该是XAER_RMFAIL。因此,如果数据库在一阶段提交的提交阶段出现连接问题时,会导致数据不统一的问题,客户端会接收到事务被回滚的信息。Postgres Plus JDBC 驱动会为 Postgres Plus Server 中存在的所有准备的事务返回 XID,因此无法决定 XID 属于哪个数据库。如果为 JBoss EAP 中的同一个数据库定义了多个数据源,一个 in-doubt 事务恢复尝试会在错误的账户中返回,这将导致恢复失败。
- Oracle
当恢复管理器使用由一些用户的凭证信息配置的数据源调用恢复时,JDBC 驱动返回属于数据库实例中所有用户的 XID。JDBC 驱动会产生异常
ORA-24774: cannot switch to specified transaction,这是因为它尝试恢复属于其它用户的 XID。解决这个问题的一个临时方法是,为用来配置恢复数据源的用户分配
FORCE ANY TRANSACTION权限。如需了解更多相关信息,请参阅 http://docs.oracle.com/database/121/ADMIN/ds_txnman.htm#ADMIN12259- Microsoft SQL 服务器
在二阶段提交(2PC)的提交阶段发生网络故障时,JDBC 驱动会返回
XAER_RMERRXAException 错误代码。这个错误代表了事务管理器的一个不可恢复的严重事件,但在数据库一端,这个事务会处于in-doubt状态,并在网络连接重新建立后可以容易地进行修复。正确的返回错误代码应该是XAER_RMFAIL或XAER_RETRY。不正确的错误代码会导致事务在 JBoss EAP 中处于Heuristic状态,并会在数据库中被锁定,需要手工干预才可以解决这个问题。如需了解更多相关信息,请参阅 Microsoft SQL Server issue report。如果在使用一阶段提交时出现连接错误,JDBC 驱动会返回
XAER_RMERR,但正确的错误返回代码应该是XAER_RMFAIL。因此,如果数据库在一阶段提交的提交阶段出现连接问题时,会导致数据不统一的问题,客户端会接收到事务被回滚的信息。- IBM DB2
-
如果在使用一阶段提交时出现连接错误,JDBC 驱动会返回
XAER_RETRY,但正确的错误返回代码应该是XAER_RMFAIL。因此,如果数据库在一阶段提交的提交阶段出现连接问题时,会导致数据不统一的问题,客户端会接收到事务被回滚的信息。 - Sybase
在二阶段提交(2PC)的提交阶段发生网络故障时,JDBC 驱动会返回
XAER_RMERRXAException 错误代码。这个错误代表了事务管理器的一个不可恢复的严重事件,但在数据库一端,这个事务会处于in-doubt状态,并在网络连接重新建立后可以容易地进行修复。正确的返回错误代码应该是XAER_RMFAIL或XAER_RETRY。不正确的错误代码会导致事务在 JBoss EAP 中处于Heuristic状态,并会在数据库中被锁定,需要手工干预才可以解决这个问题。如果在使用一阶段提交时出现连接错误,JDBC 驱动会返回
XAER_RMERR,但正确的错误返回代码应该是XAER_RMFAIL。因此,如果数据库在一阶段提交的提交阶段出现连接问题时,会导致数据不统一的问题,客户端会接收到事务被回滚的信息。- MariaDB
- MySQL 并不能完全处理 XA 事务。如果客户断开 MySQL,那么事务的所有信息都会丢失。
13.8. 数据库连接检验
数据库维护、网络问题或其他断电事件都可能导致 JBoss EAP 丢失数据库连接。为了从这些状况中恢复,您可以为数据源启用数据库连接检验。
在配置数据库连接验证时,需要指定验证时间(验证在什么时间发生)、验证机制(验证如何执行),以及异常处理(验证出现异常时如何处理)。
选择其中一个检验时间。
- validate-on-match
如果
validate-on-match选项被设置为true,每次从连接池中调出数据库连接时,都会使用下一步中指定的验证机制进行验证。如果连接没有通过验证,则会在日志中写一个警告信息,池中的下一个连接会被调出。这个过程会一直继续,直到获得了一个有效的连接。如果您不希望检查池中的每一个连接,则可以使用
use-fast-fail选项。如果无法在池中找到有效连接,则会向请求的应用程序返回一个异常。这种设置可以最快获得结果,但对数据库所产生的负载也是最高的。不过,如果性能的小损失不是非常重要,则这种设置会是一个最安全的选择。
- background-validation
当
background-validation选项被设置为true时,连接会在使用前,在后台线程中被定期验证。验证的频率由background-validation-millis属性指定。background-validation-millis的默认值是0,这意味着它被禁用。在确定
background-validation-millis属性的值时,请考虑下列情况:-
这个值不应该和
idle-timeout-minutes设置相同。 - 这个值越低,池中的连接会被越频繁地验证,无效连接会被更快地从池中删除。
- 如果这个值比较低,则会消耗更多数据库资源。较高值意味着验证检查发生的频率会降低,并使用较少的数据库资源,但需要更长的时间来发现无效的连接。
-
这个值不应该和
注意这些选项是互斥的。如果
validate-on-match被设置为true,则background-validation必须被设置为false。如果background-validation被设置为 true,则validate-on-match必须被设置为false。选择其中一个检验机制。
- valid-connection-checker-class-name
valid-connection-checker-class-name是首选的验证机制。它指定了一个连接检查程序(connection checker)类用来对使用的特定数据库的连接进行验证。JBoss EAP 提供了以下的连接检查程序:-
org.jboss.jca.adapters.jdbc.extensions.db2.DB2ValidConnectionChecker -
org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker -
org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLReplicationValidConnectionChecker -
org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker -
org.jboss.jca.adapters.jdbc.extensions.novendor.JDBC4ValidConnectionChecker -
org.jboss.jca.adapters.jdbc.extensions.novendor.NullValidConnectionChecker -
org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker -
org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker -
org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseValidConnectionChecker
-
- check-valid-connection-sql
通过
check-valid-connection-sql提供用于检验连接的 SQL 语句。下面是您可以用来检验 Oracle 连接的 SQL 语句示例。
select 1 from dual
下面是您可以用来检验 MySQL 或 PostgreSQL 连接的 SQL 语句示例。
select 1
设置 exception sorter 的类名。
当一个异常被标记为致命(fatal)时,连接会被马上关闭,即使这个连接参与了一个事务。在致命连接异常发生后,使用 exception sorter 选项来正确发现并清理。这需要为您的数据源类型选择恰当的 JBoss EAP exception sorter。
-
org.jboss.jca.adapters.jdbc.extensions.db2.DB2ExceptionSorter -
org.jboss.jca.adapters.jdbc.extensions.informix.InformixExceptionSorter -
org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLExceptionSorter -
org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter -
org.jboss.jca.adapters.jdbc.extensions.novendor.NullExceptionSorter -
org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter -
org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter -
org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseExceptionSorter
-
13.9. 数据源的安全性
数据源安全是指对数据源连接的密码进行加密。这些密码可以以明文的形式保存在配置文件中,但这将会导致潜在的安全风险。
数据源安全的首选解决方案是使用安全域或密码库。下面是两者的例子。
用安全域保护数据源
下面定义了数据源的安全域。
<security-domain name="DsRealm" cache-type="default">
<authentication>
<login-module code="ConfiguredIdentity" flag="required">
<module-option name="userName" value="sa"/>
<module-option name="principal" value="sa"/>
<module-option name="password" value="sa"/>
</login-module>
</authentication>
</security-domain>
如果一个安全域将和多个数据源一起使用,则应该在安全域中禁用数据缓存。把 cache-type 参数的值设为 none,或完全删除这个参数。但是,如果需要使用缓存,则每个数据源都需要一个独立的安全域。
然后 DsRealm 被数据源配置所引用。
<datasources>
<datasource jndi-name="java:jboss/datasources/securityDs"
pool-name="securityDs">
<connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>
<driver>h2</driver>
<new-connection-sql>select current_user()</new-connection-sql>
<security>
<security-domain>DsRealm</security-domain>
</security>
</datasource>
</datasources>关于安全域的更多信息,请参考如何配置身份管理章节。
用密码库保护数据源
<security>
<user-name>admin</user-name>
<password>${VAULT::ds_ExampleDS::password::N2NhZDYzOTMtNWE0OS00ZGQ0LWE4MmEtMWNlMDMyNDdmNmI2TElORV9CUkVBS3ZhdWx0}</password>
</security>关于密码库的更多信息,请参考如何配置服务器安全性章节。
13.10. 数据源统计
您可以查看定义的数据源的核心池和 JDBC 运行时的统计数据。如需了解统计数据的完整列表,请参阅数据源统计一节。
启用数据源统计
在默认情况下,数据源统计是不启用的。下面的管理 CLI 命令启用了 ExampleDS 数据源的统计收集。
在受管域里,命令前加入 /profile=PROFILE_NAME。
/subsystem=datasources/data-source=ExampleDS/statistics=pool:write-attribute(name=statistics-enabled,value=true)
/subsystem=datasources/data-source=ExampleDS/statistics=jdbc:write-attribute(name=statistics-enabled,value=true)
查看数据源统计
所有的数据源统计信息都可以通过 CLI 命令来获取。这些统计的子集可以从管理控制台的 Runtime 标签页里查看。
下面的管理 CLI 命令获取 ExampleDS 数据源的核心池统计。
在受管域里,请在这些命令之前使用 /host=HOST_NAME/server=SERVER_NAME。
/subsystem=datasources/data-source=ExampleDS/statistics=pool:read-resource(include-runtime=true)
{
"outcome" => "success",
"result" => {
"ActiveCount" => 1,
"AvailableCount" => 20,
"AverageBlockingTime" => 0L,
"AverageCreationTime" => 122L,
"AverageGetTime" => 128L,
"AveragePoolTime" => 0L,
"AverageUsageTime" => 0L,
"BlockingFailureCount" => 0,
"CreatedCount" => 1,
"DestroyedCount" => 0,
"IdleCount" => 1,
...
}
下面的管理 CLI 命令获取了 ExampleDS 数据源的 JDBC 统计信息。
/subsystem=datasources/data-source=ExampleDS/statistics=jdbc:read-resource(include-runtime=true)
{
"outcome" => "success",
"result" => {
"PreparedStatementCacheAccessCount" => 0L,
"PreparedStatementCacheAddCount" => 0L,
"PreparedStatementCacheCurrentSize" => 0,
"PreparedStatementCacheDeleteCount" => 0L,
"PreparedStatementCacheHitCount" => 0L,
"PreparedStatementCacheMissCount" => 0L,
"statistics-enabled" => true
}
}
因为统计都是运行时信息,请确保指定了 include-runtime=true 参数。
13.11. 容量策略
JBoss EAP 支持为 JCA 部署定义包括数据源在内的容量策略。容量策略定义了一个池的物理连接如何创建(增加容量)和销毁(减少容量)。默认的策略是,在增加容量时,为每个请求创建一次连接;当调度空闲超时来减少容量时,销毁所有超时的连接。
要配置容量策略,您需要指定一个容量 incrementer 或 decrementer 类:
命令示例
/subsystem=datasources/data-source=ExampleDS:write-attribute(name=capacity-incrementer-class, value="org.jboss.jca.core.connectionmanager.pool.capacity.SizeIncrementer") /subsystem=datasources/data-source=ExampleDS:write-attribute(name=capacity-decrementer-class, value="org.jboss.jca.core.connectionmanager.pool.capacity.SizeDecrementer")
您也可以在指定的容量 incrementer 或 decrementer 类上配置属性:
命令示例
/subsystem=datasources/data-source=ExampleDS:write-attribute(name=capacity-incrementer-properties.size, value=2) /subsystem=datasources/data-source=ExampleDS:write-attribute(name=capacity-decrementer-properties.size, value=2)
MaxPoolSize Incrementer 策略
类名:org.jboss.jca.core.connectionmanager.pool.capacity.MaxPoolSizeIncrementer
MaxPoolSize incrementer 策略会为每个请求把池添充到最大值。如果您需要一直保持有最多数量的可用连接时,可以使用这个策略。
Size Incrementer 策略
类名:org.jboss.jca.core.connectionmanager.pool.capacity.SizeIncrementer
Size incrementer 策略会为每个请求在池中添充指定数量的连接。如果您预测每个请求的下一个请求也需要连接,所以需要为当前的请求增加一定数量的连接时,可以使用这个策略。
表 13.3. Size 策略属性
| 名称 | 描述 |
|---|---|
|
Size |
应该创建的连接数量 |
这是默认策略,它的 size 值为 1。
Watermark Incrementer 策略
类名:org.jboss.jca.core.connectionmanager.pool.capacity.WatermarkIncrementer
Watermark incrementer 策略会为每个请求把池添充到特定连接数量。如果您需要池中总保留特定数量的连接时,可以使用这个策略。
表 13.4. Watermark 策略属性
| 名称 | 描述 |
|---|---|
|
Watermark |
连接数量的 watermark 值 |
MinPoolSize Decrementer 策略
类名: org.jboss.jca.core.connectionmanager.pool.capacity.MinPoolSizeDecrementer
MinPoolSize decrementer 策略会为每个请求把池减到它的最小值。如果您希望在每个空闲超时请求时限制连接数量,可以使用这个策略。这个池会以先进先出(FIFO)的模式操作。
Size Decrementer 策略
类名: org.jboss.jca.core.connectionmanager.pool.capacity.SizeDecrementer
Size decrementer 策略会在每个空闲超时请求时,为池减少特定数量的连接。
表 13.5. Size 策略属性
| 名称 | 描述 |
|---|---|
|
Size |
需要被销毁的连接数量 |
如果您预测随着时间的推移,池的使用情况会下降,因此希望在每个空闲请求时减少特定数量的连接时,可以使用这个策略。
池会以先进先出(FIFO)模式操作。
TimedOut Decrementer 策略
类名: org.jboss.jca.core.connectionmanager.pool.capacity.TimedOutDecrementer
TimedOut decrementer 策略会为每个空闲超时请求删除池中所有的超时连接。池以先进后出(FILO)的形式操作。
这个策略是默认的 decrement 策略。
TimedOut/FIFO Decrementer 策略
类名: org.jboss.jca.core.connectionmanager.pool.capacity.TimedOutFIFODecrementer
TimedOutFIFO decrementer 策略会为每个空闲超时请求删除池中所有的超时连接。池以先进先出(FIFO)的形式操作。
Watermark Decrementer 策略
类名: org.jboss.jca.core.connectionmanager.pool.capacity.WatermarkDecrementer
Watermark incrementer 策略会为每个空闲超时请求把池减少到特定连接数量。如果您需要池中总保留特定数量的连接时,可以使用这个策略。池会以先进先出(FIFO)的形式操作。
表 13.6. Watermark 策略属性
| 名称 | 描述 |
|---|---|
|
Watermark |
连接数量的 watermark 值 |
13.12. 登记跟踪
登记跟踪(enlistment trace)会被记录,它会被用来帮助在登记 XAResource 实例时定位错误的发生。这个功能会对性能有一定影响,您可能会在特定情况下需要禁用它。
您可以使用管理 CLI 禁用记录登记跟踪的功能。您需要把 enlistment-trace 属性的值设置为 false。
禁用非 XA 数据源的 enlistment 跟踪
data-source --name=DATASOURCE_NAME --enlistment-trace=false
禁用 XA 数据源的 enlistment 跟踪
xa-data-source --name=XA_DATASOURCE_NAME --enlistment-trace=false
禁用登记跟踪会使在事务登记的过程中查找错误变得比较困难。
13.13. 数据源配置示例
13.13.1. MySQL 数据源示例
这是一个带有连接信息、基本安全性和检验选项的 MySQL 数据源配置示例。
MySQL 数据源配置示例
<datasources>
<datasource jndi-name="java:jboss/MySqlDS" pool-name="MySqlDS">
<connection-url>jdbc:mysql://localhost:3306/jbossdb</connection-url>
<driver>mysql</driver>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
<validate-on-match>true</validate-on-match>
<background-validation>false</background-validation>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
</validation>
</datasource>
<drivers>
<driver name="mysql" module="com.mysql">
<driver-class>com.mysql.jdbc.Driver</driver-class>
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>MySQL JDBC Driver module.xml 文件示例
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.mysql">
<resources>
<resource-root path="mysql-connector-java-5.1.36-bin.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>管理 CLI 命令示例
这个配置示例可以用下列管理 CLI 命令来实现。
将 MySQL JDBC 驱动添加为核心模块。
module add --name=com.mysql --resources=/path/to/mysql-connector-java-5.1.36-bin.jar --dependencies=javax.api,javax.transaction.api
重要Using the
modulemanagement CLI command to add and remove modules is provided as technology preview only. This command is not appropriate for use in a managed domain or when connecting to the management CLI remotely. Modules should be added and removed manually in a production environment.注册 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)
添加 MySQL 数据源。
data-source add --name=MySqlDS --jndi-name=java:jboss/MySqlDS --driver-name=mysql --connection-url=jdbc:mysql://localhost:3306/jbossdb --user-name=admin --password=admin --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter
13.13.2. MySQL XA 数据源示例
这是一个带有 XA 数据源属性、基本安全性和检验选项的 MySQL XA 数据源配置示例。
MySQL XA 数据源配置示例
<datasources>
<xa-datasource jndi-name="java:jboss/MySqlXADS" pool-name="MySqlXADS">
<xa-datasource-property name="ServerName">
localhost
</xa-datasource-property>
<xa-datasource-property name="DatabaseName">
mysqldb
</xa-datasource-property>
<driver>mysql</driver>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
<validate-on-match>true</validate-on-match>
<background-validation>false</background-validation>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
</validation>
</xa-datasource>
<drivers>
<driver name="mysql" module="com.mysql">
<driver-class>com.mysql.jdbc.Driver</driver-class>
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>MySQL JDBC Driver module.xml 文件示例
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.mysql">
<resources>
<resource-root path="mysql-connector-java-5.1.36-bin.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>管理 CLI 命令示例
这个配置示例可以用下列管理 CLI 命令来实现。
将 MySQL JDBC 驱动添加为核心模块。
module add --name=com.mysql --resources=/path/to/mysql-connector-java-5.1.36-bin.jar --dependencies=javax.api,javax.transaction.api
重要Using the
modulemanagement CLI command to add and remove modules is provided as technology preview only. This command is not appropriate for use in a managed domain or when connecting to the management CLI remotely. Modules should be added and removed manually in a production environment.注册 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)
添加 MySQL XA 数据源。
xa-data-source add --name=MySqlXADS --jndi-name=java:jboss/MySqlXADS --driver-name=mysql --user-name=admin --password=admin --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter --xa-datasource-properties={"ServerName"=>"localhost","DatabaseName"=>"mysqldb"}
13.13.3. PostgreSQL 数据源示例
这是一个带有连接信息、基本安全性和检验选项的 PostgreSQL 数据源配置示例。
PostgreSQL 数据源配置示例
<datasources>
<datasource jndi-name="java:jboss/PostgresDS" pool-name="PostgresDS">
<connection-url>jdbc:postgresql://localhost:5432/postgresdb</connection-url>
<driver>postgresql</driver>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"/>
<validate-on-match>true</validate-on-match>
<background-validation>false</background-validation>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"/>
</validation>
</datasource>
<drivers>
<driver name="postgresql" module="com.postgresql">
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>PostgreSQL JDBC 驱动的 module.xml 文件示例
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.postgresql">
<resources>
<resource-root path="postgresql-9.3-1102.jdbc4.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>管理 CLI 命令示例
这个配置示例可以用下列管理 CLI 命令来实现。
将 PostgreSQL JDBC 驱动添加为核心模块。
module add --name=com.postgresql --resources=/path/to/postgresql-9.3-1102.jdbc4.jar --dependencies=javax.api,javax.transaction.api
重要Using the
modulemanagement CLI command to add and remove modules is provided as technology preview only. This command is not appropriate for use in a managed domain or when connecting to the management CLI remotely. Modules should be added and removed manually in a production environment.注册 PostgreSQL JDBC 驱动。
/subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql,driver-module-name=com.postgresql,driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource)
添加 PostgreSQL 数据源。
data-source add --name=PostgresDS --jndi-name=java:jboss/PostgresDS --driver-name=postgresql --connection-url=jdbc:postgresql://localhost:5432/postgresdb --user-name=admin --password=admin --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter
13.13.4. PostgreSQL XA 数据源示例
这是一个带有 XA 数据源属性、基本安全性和检验选项的 PostgreSQL XA 数据源配置示例。
PostgreSQL XA 数据源配置示例
<datasources>
<xa-datasource jndi-name="java:jboss/PostgresXADS" pool-name="PostgresXADS">
<xa-datasource-property name="ServerName">
localhost
</xa-datasource-property>
<xa-datasource-property name="PortNumber">
5432
</xa-datasource-property>
<xa-datasource-property name="DatabaseName">
postgresdb
</xa-datasource-property>
<driver>postgresql</driver>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"/>
<validate-on-match>true</validate-on-match>
<background-validation>false</background-validation>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"/>
</validation>
</xa-datasource>
<drivers>
<driver name="postgresql" module="com.postgresql">
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>PostgreSQL JDBC 驱动的 module.xml 文件示例
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.postgresql">
<resources>
<resource-root path="postgresql-9.3-1102.jdbc4.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>管理 CLI 命令示例
这个配置示例可以用下列管理 CLI 命令来实现。
将 PostgreSQL JDBC 驱动添加为核心模块。
module add --name=com.postgresql --resources=/path/to/postgresql-9.3-1102.jdbc4.jar --dependencies=javax.api,javax.transaction.api
重要Using the
modulemanagement CLI command to add and remove modules is provided as technology preview only. This command is not appropriate for use in a managed domain or when connecting to the management CLI remotely. Modules should be added and removed manually in a production environment.注册 PostgreSQL JDBC 驱动。
/subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql,driver-module-name=com.postgresql,driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource)
添加 PostgreSQL XA 数据源。
xa-data-source add --name=PostgresXADS --jndi-name=java:jboss/PostgresXADS --driver-name=postgresql --user-name=admin --password=admin --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter --xa-datasource-properties={"ServerName"=>"localhost","PortNumber"=>"5432","DatabaseName"=>"postgresdb"}
13.13.5. Oracle 数据源示例
这是一个带有连接信息、基本安全性和检验选项的 Oracle 数据源配置示例。
Oracle 数据源配置示例
<datasources>
<datasource jndi-name="java:jboss/OracleDS" pool-name="OracleDS">
<connection-url>jdbc:oracle:thin:@localhost:1521:XE</connection-url>
<driver>oracle</driver>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"/>
<validate-on-match>true</validate-on-match>
<background-validation>false</background-validation>
<stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker"/>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter"/>
</validation>
</datasource>
<drivers>
<driver name="oracle" module="com.oracle">
<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>Oracle JDBC 驱动的 module.xml 文件示例
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.oracle">
<resources>
<resource-root path="ojdbc7.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>管理 CLI 命令示例
这个配置示例可以用下列管理 CLI 命令来实现。
将 Oracle JDBC 驱动添加为核心模块。
module add --name=com.oracle --resources=/path/to/misc/jdbc_drivers/oracle/ojdbc7.jar --dependencies=javax.api,javax.transaction.api
重要Using the
modulemanagement CLI command to add and remove modules is provided as technology preview only. This command is not appropriate for use in a managed domain or when connecting to the management CLI remotely. Modules should be added and removed manually in a production environment.注册 Oracle JDBC 驱动。
/subsystem=datasources/jdbc-driver=oracle:add(driver-name=oracle,driver-module-name=com.oracle,driver-xa-datasource-class-name=oracle.jdbc.xa.client.OracleXADataSource)
添加 Oracle 数据源。
data-source add --name=OracleDS --jndi-name=java:jboss/OracleDS --driver-name=oracle --connection-url=jdbc:oracle:thin:@localhost:1521:XE --user-name=admin --password=admin --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter --stale-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker
13.13.6. Oracle XA 数据源示例
下面的设置必须应用于访问 Oracle XA 数据源的用户以让 XA 恢复正常操作。user 的值是连接 JBoss EAP 至 Oracle 的用户。
-
GRANT SELECT ON sys.dba_pending_transactions TO user; -
GRANT SELECT ON sys.pending_trans$ TO user; -
GRANT SELECT ON sys.dba_2pc_pending TO user; -
GRANT EXECUTE ON sys.dbms_xa TO user;
这是一个带有 XA 数据源属性、基本安全性和检验选项的 Oracle XA 数据源配置示例。
Oracle XA 数据源配置示例
<datasources>
<xa-datasource jndi-name="java:jboss/OracleXADS" pool-name="OracleXADS">
<xa-datasource-property name="URL">
jdbc:oracle:thin:@oracleHostName:1521:orcl
</xa-datasource-property>
<driver>oracle</driver>
<xa-pool>
<is-same-rm-override>false</is-same-rm-override>
</xa-pool>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"/>
<validate-on-match>true</validate-on-match>
<background-validation>false</background-validation>
<stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker"/>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter"/>
</validation>
</xa-datasource>
<drivers>
<driver name="oracle" module="com.oracle">
<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>Oracle JDBC 驱动的 module.xml 文件示例
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.oracle">
<resources>
<resource-root path="ojdbc7.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>管理 CLI 命令示例
这个配置示例可以用下列管理 CLI 命令来实现。
将 Oracle JDBC 驱动添加为核心模块。
module add --name=com.oracle --resources=/path/to/misc/jdbc_drivers/oracle/ojdbc7.jar --dependencies=javax.api,javax.transaction.api
重要Using the
modulemanagement CLI command to add and remove modules is provided as technology preview only. This command is not appropriate for use in a managed domain or when connecting to the management CLI remotely. Modules should be added and removed manually in a production environment.注册 Oracle JDBC 驱动。
/subsystem=datasources/jdbc-driver=oracle:add(driver-name=oracle,driver-module-name=com.oracle,driver-xa-datasource-class-name=oracle.jdbc.xa.client.OracleXADataSource)
添加 Oracle XA 数据源。
xa-data-source add --name=OracleXADS --jndi-name=java:jboss/OracleXADS --driver-name=oracle --user-name=admin --password=admin --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter --stale-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker --same-rm-override=false --xa-datasource-properties={"URL"=>"jdbc:oracle:thin:@oracleHostName:1521:orcl"}
13.13.7. Microsoft SQL Server 数据源示例
这是一个带有连接信息、基本安全性和检验选项的 Microsoft SQL 服务器数据源配置示例。
Microsoft SQL Server 数据源配置示例
<datasources>
<datasource jndi-name="java:jboss/MSSQLDS" pool-name="MSSQLDS">
<connection-url>jdbc:sqlserver://localhost:1433;DatabaseName=MyDatabase</connection-url>
<driver>sqlserver</driver>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker"/>
<validate-on-match>true</validate-on-match>
<background-validation>false</background-validation>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLExceptionSorter"/>
</validation>
</datasource>
<drivers>
<driver name="sqlserver" module="com.microsoft">
<xa-datasource-class>com.microsoft.sqlserver.jdbc.SQLServerXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>Microsoft SQL Server JDBC 驱动的 module.xml 文件示例
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.microsoft">
<resources>
<resource-root path="sqljdbc41.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>管理 CLI 命令示例
这个配置示例可以用下列管理 CLI 命令来实现。
将 Microsoft SQL Server JDBC 驱动添加为核心模块。
module add --name=com.microsoft --resources=/path/to/sqljdbc41.jar --dependencies=javax.api,javax.transaction.api
重要Using the
modulemanagement CLI command to add and remove modules is provided as technology preview only. This command is not appropriate for use in a managed domain or when connecting to the management CLI remotely. Modules should be added and removed manually in a production environment.注册 Microsoft SQL Server JDBC 驱动。
/subsystem=datasources/jdbc-driver=sqlserver:add(driver-name=sqlserver,driver-module-name=com.microsoft,driver-xa-datasource-class-name=com.microsoft.sqlserver.jdbc.SQLServerXADataSource)
添加 Microsoft SQL Server 数据源
data-source add --name=MSSQLDS --jndi-name=java:jboss/MSSQLDS --driver-name=sqlserver --connection-url=jdbc:sqlserver://localhost:1433;DatabaseName=MyDatabase --user-name=admin --password=admin --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLExceptionSorter
13.13.8. Microsoft SQL Server XA 数据源示例
这是一个带有 XA 数据源属性、基本安全性和检验选项的 Microsoft SQL Server XA 数据源配置示例。
Microsoft SQL Server XA 数据源配置示例
<datasources>
<xa-datasource jndi-name="java:jboss/MSSQLXADS" pool-name="MSSQLXADS">
<xa-datasource-property name="ServerName">
localhost
</xa-datasource-property>
<xa-datasource-property name="DatabaseName">
mssqldb
</xa-datasource-property>
<xa-datasource-property name="SelectMethod">
cursor
</xa-datasource-property>
<driver>sqlserver</driver>
<xa-pool>
<is-same-rm-override>false</is-same-rm-override>
</xa-pool>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker"/>
<validate-on-match>true</validate-on-match>
<background-validation>false</background-validation>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLExceptionSorter"/>
</validation>
</xa-datasource>
<drivers>
<driver name="sqlserver" module="com.microsoft">
<xa-datasource-class>com.microsoft.sqlserver.jdbc.SQLServerXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>Microsoft SQL Server JDBC 驱动的 module.xml 文件示例
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.microsoft">
<resources>
<resource-root path="sqljdbc41.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>管理 CLI 命令示例
这个配置示例可以用下列管理 CLI 命令来实现。
将 Microsoft SQL Server JDBC 驱动添加为核心模块。
module add --name=com.microsoft --resources=/path/to/sqljdbc41.jar --dependencies=javax.api,javax.transaction.api
重要Using the
modulemanagement CLI command to add and remove modules is provided as technology preview only. This command is not appropriate for use in a managed domain or when connecting to the management CLI remotely. Modules should be added and removed manually in a production environment.注册 Microsoft SQL Server JDBC 驱动。
/subsystem=datasources/jdbc-driver=sqlserver:add(driver-name=sqlserver,driver-module-name=com.microsoft,driver-xa-datasource-class-name=com.microsoft.sqlserver.jdbc.SQLServerXADataSource)
添加 Microsoft SQL Server XA 数据源
xa-data-source add --name=MSSQLXADS --jndi-name=java:jboss/MSSQLXADS --driver-name=sqlserver --user-name=admin --password=admin --validate-on-match=true --background-validation=false --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLExceptionSorter --same-rm-override=false --xa-datasource-properties={"ServerName"=>"localhost","DatabaseName"=>"mssqldb","SelectMethod"=>"cursor"}
13.13.9. IBM DB2 数据源示例
这是一个带有连接信息、基本安全性和检验选项的 IBM DB2 数据源配置示例。
IBM DB2 数据源配置示例
<datasources>
<datasource jndi-name="java:jboss/DB2DS" pool-name="DB2DS">
<connection-url>jdbc:db2://localhost:50000/ibmdb2db</connection-url>
<driver>ibmdb2</driver>
<pool>
<min-pool-size>0</min-pool-size>
<max-pool-size>50</max-pool-size>
</pool>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2ValidConnectionChecker"/>
<validate-on-match>true</validate-on-match>
<background-validation>false</background-validation>
<stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2StaleConnectionChecker"/>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2ExceptionSorter"/>
</validation>
</datasource>
<drivers>
<driver name="ibmdb2" module="com.ibm">
<xa-datasource-class>com.ibm.db2.jcc.DB2XADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>IBM DB2 JDBC 驱动的 module.xml 文件示例
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.ibm">
<resources>
<resource-root path="db2jcc4.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>管理 CLI 命令示例
这个配置示例可以用下列管理 CLI 命令来实现。
将 IBM DB2 JDBC 驱动添加为核心模块。
module add --name=com.ibm --resources=/path/to/db2jcc4.jar --dependencies=javax.api,javax.transaction.api
重要Using the
modulemanagement CLI command to add and remove modules is provided as technology preview only. This command is not appropriate for use in a managed domain or when connecting to the management CLI remotely. Modules should be added and removed manually in a production environment.注册 IBM DB2 JDBC 驱动。
/subsystem=datasources/jdbc-driver=ibmdb2:add(driver-name=ibmdb2,driver-module-name=com.ibm,driver-xa-datasource-class-name=com.ibm.db2.jcc.DB2XADataSource)
添加 IBM DB2 数据源。
data-source add --name=DB2DS --jndi-name=java:jboss/DB2DS --driver-name=ibmdb2 --connection-url=jdbc:db2://localhost:50000/ibmdb2db --user-name=admin --password=admin --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.db2.DB2ValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.db2.DB2ExceptionSorter --stale-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.db2.DB2StaleConnectionChecker --min-pool-size=0 --max-pool-size=50
13.13.10. IBM DB2 XA 数据源示例
这是一个带有 XA 数据源属性、基本安全性和检验选项的 IBM DB2 XA 数据源配置示例。
IBM DB2 XA 数据源配置示例
<datasources>
<xa-datasource jndi-name="java:jboss/DB2XADS" pool-name="DB2XADS">
<xa-datasource-property name="ServerName">
localhost
</xa-datasource-property>
<xa-datasource-property name="DatabaseName">
ibmdb2db
</xa-datasource-property>
<xa-datasource-property name="PortNumber">
50000
</xa-datasource-property>
<xa-datasource-property name="DriverType">
4
</xa-datasource-property>
<driver>ibmdb2</driver>
<xa-pool>
<is-same-rm-override>false</is-same-rm-override>
</xa-pool>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<recovery>
<recover-plugin class-name="org.jboss.jca.core.recovery.ConfigurableRecoveryPlugin">
<config-property name="EnableIsValid">
false
</config-property>
<config-property name="IsValidOverride">
false
</config-property>
<config-property name="EnableClose">
false
</config-property>
</recover-plugin>
</recovery>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2ValidConnectionChecker"/>
<validate-on-match>true</validate-on-match>
<background-validation>false</background-validation>
<stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2StaleConnectionChecker"/>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2ExceptionSorter"/>
</validation>
</xa-datasource>
<drivers>
<driver name="ibmdb2" module="com.ibm">
<xa-datasource-class>com.ibm.db2.jcc.DB2XADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>IBM DB2 JDBC 驱动的 module.xml 文件示例
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.ibm">
<resources>
<resource-root path="db2jcc4.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>管理 CLI 命令示例
这个配置示例可以用下列管理 CLI 命令来实现。
将 IBM DB2 JDBC 驱动添加为核心模块。
module add --name=com.ibm --resources=/path/to/db2jcc4.jar --dependencies=javax.api,javax.transaction.api
重要Using the
modulemanagement CLI command to add and remove modules is provided as technology preview only. This command is not appropriate for use in a managed domain or when connecting to the management CLI remotely. Modules should be added and removed manually in a production environment.注册 IBM DB2 JDBC 驱动。
/subsystem=datasources/jdbc-driver=ibmdb2:add(driver-name=ibmdb2,driver-module-name=com.ibm,driver-xa-datasource-class-name=com.ibm.db2.jcc.DB2XADataSource)
添加 IBM DB2 XA 数据源。
xa-data-source add --name=DB2XADS --jndi-name=java:jboss/DB2XADS --driver-name=ibmdb2 --user-name=admin --password=admin --validate-on-match=true --background-validation=false --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.db2.DB2ValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.db2.DB2ExceptionSorter --stale-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.db2.DB2StaleConnectionChecker --same-rm-override=false --recovery-plugin-class-name=org.jboss.jca.core.recovery.ConfigurableRecoveryPlugin --recovery-plugin-properties={"EnableIsValid"=>"false","IsValidOverride"=>"false","EnableClose"=>"false"} --xa-datasource-properties={"ServerName"=>"localhost","DatabaseName"=>"ibmdb2db","PortNumber"=>"50000","DriverType"=>"4"}
13.13.11. Sybase 数据源示例
这是一个带有连接信息、基本安全性和检验选项的 Sybase 数据源配置示例。
Sybase 数据源配置示例
<datasources>
<datasource jndi-name="java:jboss/SybaseDB" pool-name="SybaseDB">
<connection-url>jdbc:sybase:Tds:localhost:5000/DATABASE?JCONNECT_VERSION=6</connection-url>
<driver>sybase</driver>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseValidConnectionChecker"/>
<validate-on-match>true</validate-on-match>
<background-validation>false</background-validation>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseExceptionSorter"/>
</validation>
</datasource>
<drivers>
<driver name="sybase" module="com.sybase">
<xa-datasource-class>com.sybase.jdbc4.jdbc.SybXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>Sybase JDBC 驱动的 module.xml 文件示例
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.sybase">
<resources>
<resource-root path="jconn4.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>管理 CLI 命令示例
这个配置示例可以用下列管理 CLI 命令来实现。
将 Sybase JDBC 驱动添加为核心模块。
module add --name=com.sybase --resources=/path/to/jconn4.jar --dependencies=javax.api,javax.transaction.api
重要Using the
modulemanagement CLI command to add and remove modules is provided as technology preview only. This command is not appropriate for use in a managed domain or when connecting to the management CLI remotely. Modules should be added and removed manually in a production environment.注册 Sybase JDBC 驱动。
/subsystem=datasources/jdbc-driver=sybase:add(driver-name=sybase,driver-module-name=com.sybase,driver-xa-datasource-class-name=com.sybase.jdbc4.jdbc.SybXADataSource)
添加 Sybase 数据源。
data-source add --name=SybaseDB --jndi-name=java:jboss/SybaseDB --driver-name=sybase --connection-url=jdbc:sybase:Tds:localhost:5000/DATABASE?JCONNECT_VERSION=6 --user-name=admin --password=admin --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseExceptionSorter
13.13.12. Sybase XA 数据源示例
这是一个带有 XA 数据源属性、基本安全性和检验选项的 Sybase XA 数据源配置示例。
Sybase XA 数据源配置示例
<datasources>
<xa-datasource jndi-name="java:jboss/SybaseXADS" pool-name="SybaseXADS">
<xa-datasource-property name="ServerName">
localhost
</xa-datasource-property>
<xa-datasource-property name="DatabaseName">
mydatabase
</xa-datasource-property>
<xa-datasource-property name="PortNumber">
4100
</xa-datasource-property>
<xa-datasource-property name="NetworkProtocol">
Tds
</xa-datasource-property>
<driver>sybase</driver>
<xa-pool>
<is-same-rm-override>false</is-same-rm-override>
</xa-pool>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseValidConnectionChecker"/>
<validate-on-match>true</validate-on-match>
<background-validation>false</background-validation>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseExceptionSorter"/>
</validation>
</xa-datasource>
<drivers>
<driver name="sybase" module="com.sybase">
<xa-datasource-class>com.sybase.jdbc4.jdbc.SybXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>Sybase JDBC 驱动的 module.xml 文件示例
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.sybase">
<resources>
<resource-root path="jconn4.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>管理 CLI 命令示例
这个配置示例可以用下列管理 CLI 命令来实现。
将 Sybase JDBC 驱动添加为核心模块。
module add --name=com.sybase --resources=/path/to/jconn4.jar --dependencies=javax.api,javax.transaction.api
重要Using the
modulemanagement CLI command to add and remove modules is provided as technology preview only. This command is not appropriate for use in a managed domain or when connecting to the management CLI remotely. Modules should be added and removed manually in a production environment.注册 Sybase JDBC 驱动。
/subsystem=datasources/jdbc-driver=sybase:add(driver-name=sybase,driver-module-name=com.sybase,driver-xa-datasource-class-name=com.sybase.jdbc4.jdbc.SybXADataSource)
添加 Sybase XA 数据源。
xa-data-source add --name=SybaseXADS --jndi-name=java:jboss/SybaseXADS --driver-name=sybase --user-name=admin --password=admin --validate-on-match=true --background-validation=false --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseExceptionSorter --same-rm-override=false --xa-datasource-properties={"ServerName"=>"localhost","DatabaseName"=>"mydatabase","PortNumber"=>"4100","NetworkProtocol"=>"Tds"}
13.13.13. MariaDB 数据源示例
这是一个带有连接信息、基本安全性和检验选项的 MariaDB 数据源配置示例。
MariaDB 数据源配置示例
<datasources>
<datasource jndi-name="java:jboss/MariaDBDS" pool-name="MariaDBDS">
<connection-url>jdbc:mariadb://localhost:3306/jbossdb</connection-url>
<driver>mariadb</driver>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
<validate-on-match>true</validate-on-match>
<background-validation>false</background-validation>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
</validation>
</datasource>
<drivers>
<driver name="mariadb" module="org.mariadb">
<driver-class>org.mariadb.jdbc.Driver</driver-class>
<xa-datasource-class>org.mariadb.jdbc.MySQLDataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>MariaDB JDBC 驱动的 module.xml 文件示例
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="org.mariadb">
<resources>
<resource-root path="mariadb-java-client-1.2.3.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>管理 CLI 命令示例
这个配置示例可以用下列管理 CLI 命令来实现。
将 MariaDB JDBC 驱动添加为核心模块。
module add --name=org.mariadb --resources=/path/to/mariadb-java-client-1.2.3.jar --dependencies=javax.api,javax.transaction.api
重要Using the
modulemanagement CLI command to add and remove modules is provided as technology preview only. This command is not appropriate for use in a managed domain or when connecting to the management CLI remotely. Modules should be added and removed manually in a production environment.注册 MariaDB JDBC 驱动。
/subsystem=datasources/jdbc-driver=mariadb:add(driver-name=mariadb,driver-module-name=org.mariadb,driver-xa-datasource-class-name=org.mariadb.jdbc.MySQLDataSource, driver-class-name=org.mariadb.jdbc.Driver)
添加 MariaDB 数据源。
data-source add --name=MariaDBDS --jndi-name=java:jboss/MariaDBDS --driver-name=mariadb --connection-url=jdbc:mariadb://localhost:3306/jbossdb --user-name=admin --password=admin --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter
13.13.14. MariaDB XA 数据源示例
这是一个带有 XA 数据源属性、基本安全性和检验选项的 MariaDB XA 数据源配置示例。
MariaDB XA 数据源配置示例
<datasources>
<xa-datasource jndi-name="java:jboss/MariaDBXADS" pool-name="MariaDBXADS">
<xa-datasource-property name="ServerName">
localhost
</xa-datasource-property>
<xa-datasource-property name="DatabaseName">
mariadbdb
</xa-datasource-property>
<driver>mariadb</driver>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
<validate-on-match>true</validate-on-match>
<background-validation>false</background-validation>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
</validation>
</xa-datasource>
<drivers>
<driver name="mariadb" module="org.mariadb">
<driver-class>org.mariadb.jdbc.Driver</driver-class>
<xa-datasource-class>org.mariadb.jdbc.MySQLDataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>MariaDB JDBC 驱动的 module.xml 文件示例
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="org.mariadb">
<resources>
<resource-root path="mariadb-java-client-1.2.3.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>管理 CLI 命令示例
这个配置示例可以用下列管理 CLI 命令来实现。
将 MariaDB JDBC 驱动添加为核心模块。
module add --name=org.mariadb --resources=/path/to/mariadb-java-client-1.2.3.jar --dependencies=javax.api,javax.transaction.api
重要Using the
modulemanagement CLI command to add and remove modules is provided as technology preview only. This command is not appropriate for use in a managed domain or when connecting to the management CLI remotely. Modules should be added and removed manually in a production environment.注册 MariaDB JDBC 驱动。
/subsystem=datasources/jdbc-driver=mariadb:add(driver-name=mariadb,driver-module-name=org.mariadb,driver-xa-datasource-class-name=org.mariadb.jdbc.MySQLDataSource, driver-class-name=org.mariadb.jdbc.Driver)
添加 MariaDB XA 数据源。
xa-data-source add --name=MariaDBXADS --jndi-name=java:jboss/MariaDBXADS --driver-name=mariadb --user-name=admin --password=admin --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter --xa-datasource-properties={"ServerName"=>"localhost","DatabaseName"=>"mariadbdb"}

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.