8.6. datasources
根据某些环境变量的值自动创建数据源。
最重要的环境变量是 DB_SERVICE_PREFIX_MAPPING
,因为它为数据源定义 JNDI 映射。这个变量允许的值是一个用逗号分开的 POOLNAME-DATABASETYPE=PREFIX trip
lets 列表,其中:
-
POOLNAME
用作数据源中的pool-name
。 -
DATABASETYPE
是要使用的数据库驱动程序。 -
PREFIX
是环境变量名称中用于配置数据源的前缀。
8.6.1. 数据源的 JNDI 映射
对于 DB_SERVICE_
环境变量,启动脚本会创建一个单独的数据源,在运行镜像时执行。
PREFIX_MAPPING 环境变量中定义的每个POOLNAME-DATABASETYPE= PRE
FIX_MAPPING
DB_SERVICE_PREFIX_MAPPING 的第一个部分(在等号前)
应小写。
The 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 |
定义要在数据源的
示例值:192. |
POOLNAME _DATABASETYPE_SERVICE_PORT | 定义数据源的数据库服务器端口。
示例值: |
前缀 _BACKGROUND_VALIDATION |
当设置为 |
PREFIX_BACKGROUND_VALIDATION_MILLIS |
在启用了 |
前缀 _CONNECTION_CHECKER | 指定连接检查器类,用于验证正在使用的特定数据库的连接。
示例值: |
前缀_DATABASE | 定义数据源的数据库名称。
示例值: |
前缀_DRIVER | 为数据源定义 Java 数据库驱动程序。
示例值: |
PREFIX_EXCEPTION_SORTER | 指定异常分类器类,用于在致命数据库连接异常后正确检测和清理。
示例值: |
PREFIX_JNDI |
定义数据源的 JNDI 名称。默认为
示例值: |
PREFIX_JTA | 为非 XA 数据源定义 Jakarta Transactions 选项。默认情况下,XA 数据源已经能够支持 Jakarta Transactions。
默认值为 |
PREFIX_MAX_POOL_SIZE | 为数据源定义最大池大小选项。
示例值: |
PREFIX_MIN_POOL_SIZE | 定义数据源的最小池大小选项。
示例值 |
PREFIX_NONXA |
将数据源定义为非 XA 数据源。默认值为 |
前缀_PASSWORD | 定义数据源的密码。
示例值: |
PREFIX_TX_ISOLATION | 定义数据源的 java.sql.Connection 事务隔离级别。
示例值: |
前缀_URL | 定义数据源的连接 URL。
示例 value: |
前缀_USERNAME | 定义数据源的用户名。
示例值: |
在 OpenShift 中运行此镜像时,POOLNAME_DATABASETYPE_SERVICE_HOST
和 POOLNAME_DATABASETYPE_SERVICE_PORT
环境变量会自动从 OpenShift 应用模板中的数据库服务定义设置,而其他变量则直接在模板中配置为各个容器集模板的容器镜像 条目
。
8.6.1.2. 示例
这些示例演示了 DB_SERVICE_PREFIX_MAPPING
环境变量的值如何影响数据源创建。
8.6.1.2.1. 单个映射
考虑值 test-postgresql=TEST.
这将创建一个带有 java:jboss/datasources/test_postgresql
名称的数据源。此外,密码和用户名等所有必要设置都应作为环境变量提供,并附带 TEST_
前缀,如 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
。