8.6. datasources

datasources 根据某些环境变量的值自动创建。

最重要的环境变量是 DB_SERVICE_PREFIX_MAPPING,因为它定义了数据源的 JNDI 映射。这个变量允许的值是以逗号分隔的 POOLNAME-DATABASETYPE=PREFIX triplets 列表,其中:

  • POOLNAME 用作数据源中的 pool-name
  • DATABASETYPE 是要使用的数据库驱动程序。
  • PREFIX 是用于配置数据源的环境变量名称中使用的前缀。

8.6.1. Datasources 的 JNDI 映射

对于每个 POOLNAME-DATABASETYPE=PREFIX triplet,在 DB_SERVICE_PREFIX_MAPPING 环境变量中定义,启动脚本会创建一个单独的数据源,在运行镜像时执行。

注意

DB_SERVICE_PREFIX_MAPPING 的第一个部分(前面号)应为小写。

DATABASETYPE 决定数据源的驱动程序。

有关配置驱动程序的更多信息,请参阅 模块、驱动程序和通用部署。JDK 8 镜像具有 postgresqlmysql 的驱动程序。

警告

不要将任何特殊字符用于 POOLNAME 参数。

数据库驱动程序

对使用带有 JBoss EAP 的红帽提供的内部数据源驱动程序的支持现已弃用。红帽建议将 JDBC 驱动程序从数据库厂商获取用于 JBoss EAP 应用程序。

JBoss EAP for OpenShift 镜像不再提供以下内部数据源:

  • MySQL
  • PostgreSQL

有关安装驱动程序的更多信息,请参阅模块、驱动程序和通用部署

有关使用 JBoss EAP 配置 JDBC 驱动程序的更多信息,请参阅 JBoss EAP 配置指南中JDBC 驱动程序

请注意,如果您想要将它们添加到置备的服务器,您也可以创建一个自定义层来安装这些驱动程序和数据源。

8.6.1.1. 数据源配置环境变量

要配置其他数据源属性,请使用以下环境变量:

重要

务必将以下变量名称中的 POOLNAMEDATABASETYPEPREFIX 的值替换为适当的值。本节和 Datasources 部分介绍了这些可替换的值。

变量名称描述

POOLNAME_DATABASETYPE_SERVICE_HOST

定义要在数据源的 connection-url 属性中使用的数据库服务器的主机名或 IP 地址。

示例值 :192.168.1.3

POOLNAME_DATABASETYPE_SERVICE_PORT

定义数据源的数据库服务器的端口。

示例值: 5432

PREFIX_BACKGROUND_VALIDATION

当设置为 true 数据库连接时,会使用 在后台线程定期进行验证。默认为 false,表示默认情况下启用 validate-on-match 方法。

PREFIX_BACKGROUND_VALIDATION_MILLIS

当启用 后台 数据库连接验证机制(将PREFIX_BACKGROUND_VALIDATION 变量设置为 true)时指定验证的频率(以毫秒为单位)。默认值为 10000

PREFIX_CONNECTION_CHECKER

指定连接检查器类,用于验证正在使用的特定数据库的连接。

示例值: org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker

PREFIX_DATABASE

定义数据源的数据库名称。

示例值: myDatabase

PREFIX_DRIVER

为数据源定义 Java 数据库驱动程序。

示例值: postgresql

PREFIX_EXCEPTION_SORTER

指定异常排序器类,用于在致命的数据库连接异常后正确检测和清理。

示例值: org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter

PREFIX_JNDI

定义数据源的 JNDI 名称。默认为 java:jboss/datasources/POOLNAME_DATABASETYPE,其中 POOLNAMEDATABASETYPE 从上述 triplet 获取。如果要覆盖默认生成的 JNDI 名称,则此设置很有用。

示例值: java:jboss/datasources/test-postgresql

PREFIX_JTA

为非 XA 数据源定义 Jakarta Transactions 选项。XA datasources 已默认已经支持 Jakarta 事务。

默认值为 true

PREFIX_MAX_POOL_SIZE

定义数据源的最大池大小选项。

示例值 :20

PREFIX_MIN_POOL_SIZE

定义数据源的最小池大小选项。

示例值: 1

PREFIX_NONXA

将数据源定义为非 XA 数据源。默认值为 false

PREFIX_PASSWORD

定义数据源的密码。

示例值: password

PREFIX_TX_ISOLATION

为数据源定义 java.sql.Connection 事务隔离级别。

示例值:TRA NSACTION_READ_UNCOMMITTED

前缀_URL

定义数据源的连接 URL。

示例值: jdbc:postgresql://localhost:5432/postgresdb

PREFIX_USERNAME

定义数据源的用户名。

示例值: admin

在 OpenShift 中运行此镜像时,POOLNAME_DATABASETYPE_SERVICE _HOSTPOOLNAME_DATABASETYPE_SERVICE_PORT 环境变量会自动从 OpenShift 应用模板中的数据库服务定义设置,而其他项在模板下的容器定义中直接配置为 env 条目。

8.6.1.2. 例子

这些示例演示了 DB_SERVICE_PREFIX_MAPPING 环境变量创建的值如何影响数据源创建。

8.6.1.2.1. 单一映射

考虑 test-postgresql=TEST 值。

这会创建一个数据源,其名称为 java:jboss/datasources/test_postgresql。此外,所有所需的设置(如 password 和 username)都应作为带有 TEST_ prefix 的环境变量提供,如 TEST_USERNAMETEST_PASSWORD

8.6.1.2.2. 多个映射

您可以指定多个数据源映射。

注意

始终使用逗号分隔多个数据源映射。

请考虑 DB_SERVICE_PREFIX_MAPPING 环境变量的以下值: cloud-postgresql=CLOUD,test-mysql=TEST_MYSQL

这会创建两个数据源:

  1. java:jboss/datasources/test_mysql
  2. java:jboss/datasources/cloud_postgresql

然后,您可以使用 TEST_MYSQL 前缀来配置 MySQL 数据源的用户名和密码,如 TEST_MYSQL_USERNAME。对于 PostgreSQL 数据源,请使用 CLOUD_ 前缀,如 CLOUD_USERNAME