11.4. datasources
数据源根据某些环境变量的值自动创建。
最重要的环境变量是 DB_SERVICE_PREFIX_MAPPING
,因为它定义了数据源的 JNDI 映射。这个变量允许的值是以逗号分隔的 POOLNAME-DATABASETYPE=PREFIX
triplets 列表,其中:
-
POOLNAME
用作数据源中的pool-name
。 -
DATABASETYPE
是要使用的数据库驱动程序。 -
PREFIX
是用来配置数据源的环境变量名称中使用的前缀。
11.4.1. 数据源的 JNDI 映射
对于每个 POOLNAME-DATABASETYPE=PREFIX
triplet 在 DB_SERVICE_PREFIX_MAPPING
环境变量中定义的,启动脚本会创建一个单独的数据源,在运行镜像时执行。
DB_SERVICE_PREFIX_MAPPING
的第一部分(在等号之前)应为小写。
DATABASETYPE
决定数据源的驱动程序。
有关配置驱动程序的更多信息,请参阅 模块、驱动程序和通用部署。JDK 8 镜像具有 postgresql
和 mysql
的驱动程序。
不要将任何特殊字符用于 POOLNAME
参数。
对使用带有 JBoss EAP 的红帽提供的内部数据源驱动程序的支持现已弃用。红帽建议您为 JBoss EAP 应用使用从数据库供应商获取的 JDBC 驱动程序。
JBoss EAP for OpenShift 镜像不再提供以下内部数据源:
- MySQL
- PostgreSQL
有关安装驱动程序的更多信息,请参阅 模块、驱动程序和通用部署。
有关使用 JBoss EAP 配置 JDBC 驱动程序的更多信息,请参阅 JBoss EAP 配置指南中的 JDBC 驱动程序。
请注意,如果想将它们添加到置备的服务器中,您还可以创建一个自定义层来安装这些驱动程序和数据源。
11.4.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 事务隔离级别。
示例值: |
PREFIX_URL | 定义数据源的连接 URL。
示例值: |
PREFIX_USERNAME | 定义数据源的用户名。
示例值: |
11.4.1.2. 例子
这些示例演示了 DB_SERVICE_PREFIX_MAPPING
环境变量创建的值如何影响数据源创建。
11.4.1.2.1. 单个映射
考虑值 test-postgresql=TEST
。
这会创建一个数据源,其名称为 java:jboss/datasources/test_postgresql
。此外,所有所需的设置(如 password 和 username)都应作为带有 TEST_
prefix 的环境变量提供,如 TEST_USERNAME
和 TEST_PASSWORD
。
11.4.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
。