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 镜像具有 postgresql
和 mysql
的驱动程序。
不要将任何特殊字符用于 POOLNAME
参数。
对使用带有 JBoss EAP 的红帽提供的内部数据源驱动程序的支持现已弃用。红帽建议将 JDBC 驱动程序从数据库厂商获取用于 JBoss EAP 应用程序。
JBoss EAP for OpenShift 镜像不再提供以下内部数据源:
- MySQL
- PostgreSQL
有关安装驱动程序的更多信息,请参阅模块、驱动程序和通用部署。
有关使用 JBoss EAP 配置 JDBC 驱动程序的更多信息,请参阅 JBoss EAP 配置指南中的 JDBC 驱动程序。
请注意,如果您想要将它们添加到置备的服务器,您也可以创建一个自定义层来安装这些驱动程序和数据源。
8.6.1.1. 数据源配置环境变量
要配置其他数据源属性,请使用以下环境变量:
务必将以下变量名称中的 POOLNAME
、DATABASETYPE
和 PREFIX
的值替换为适当的值。本节和 Datasources 部分介绍了这些可替换的值。
变量名称 | 描述 |
---|---|
POOLNAME_DATABASETYPE_SERVICE_HOST |
定义要在数据源的
示例值 |
POOLNAME_DATABASETYPE_SERVICE_PORT | 定义数据源的数据库服务器的端口。
示例值: |
PREFIX_BACKGROUND_VALIDATION |
当设置为 |
PREFIX_BACKGROUND_VALIDATION_MILLIS |
当启用 |
PREFIX_CONNECTION_CHECKER | 指定连接检查器类,用于验证正在使用的特定数据库的连接。
示例值: |
PREFIX_DATABASE | 定义数据源的数据库名称。
示例值: |
PREFIX_DRIVER | 为数据源定义 Java 数据库驱动程序。
示例值: |
PREFIX_EXCEPTION_SORTER | 指定异常排序器类,用于在致命的数据库连接异常后正确检测和清理。
示例值: |
PREFIX_JNDI |
定义数据源的 JNDI 名称。默认为
示例值: |
PREFIX_JTA | 为非 XA 数据源定义 Jakarta Transactions 选项。XA datasources 已默认已经支持 Jakarta 事务。
默认值为 |
PREFIX_MAX_POOL_SIZE | 定义数据源的最大池大小选项。
示例值 |
PREFIX_MIN_POOL_SIZE | 定义数据源的最小池大小选项。
示例值: |
PREFIX_NONXA |
将数据源定义为非 XA 数据源。默认值为 |
PREFIX_PASSWORD | 定义数据源的密码。
示例值: |
PREFIX_TX_ISOLATION | 为数据源定义 java.sql.Connection 事务隔离级别。
示例值:TRA |
前缀_URL | 定义数据源的连接 URL。
示例值: |
PREFIX_USERNAME | 定义数据源的用户名。
示例值: |
在 OpenShift 中运行此镜像时,POOLNAME_DATABASETYPE_SERVICE
环境变量会自动从 OpenShift 应用模板中的数据库服务定义设置,而其他项在模板下的容器定义中直接配置为 _HOST
和POOLNAME_DATABASETYPE_SERVICE_PORTenv
条目。
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_USERNAME
和 TEST_PASSWORD
。
8.6.1.2.2. 多个映射
您可以指定多个数据源映射。
始终使用逗号分隔多个数据源映射。
请考虑 DB_SERVICE_PREFIX_MAPPING
环境变量的以下值: cloud-postgresql=CLOUD,test-mysql=TEST_MYSQL
。
这会创建两个数据源:
-
java:jboss/datasources/test_mysql
-
java:jboss/datasources/cloud_postgresql
然后,您可以使用 TEST_MYSQL
前缀来配置 MySQL 数据源的用户名和密码,如 TEST_MYSQL_USERNAME
。对于 PostgreSQL 数据源,请使用 CLOUD_
前缀,如 CLOUD_USERNAME
。