搜索

8.6. datasources

download PDF

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

最重要的环境变量是 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 镜像默认配置了 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

前缀 _BACKGROUND_VALIDATION

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

PREFIX_BACKGROUND_VALIDATION_MILLIS

在启用了 background-validation 数据库连接验证机制时(PREFIX_BACKGROUND_VALIDATION 变量设置为 true),以毫秒为单位指定验证频率。默认值为 10000

前缀 _CONNECTION_CHECKER

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

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

前缀_DATABASE

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

示例值: myDatabase

前缀_DRIVER

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

示例值: postgresql

PREFIX_EXCEPTION_SORTER

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

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

PREFIX_JNDI

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

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

PREFIX_JTA

为非 XA 数据源定义 Jakarta Transactions 选项。默认情况下,XA 数据源已经能够支持 Jakarta Transactions。

默认值为 true

PREFIX_MAX_POOL_SIZE

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

示例值: 20

PREFIX_MIN_POOL_SIZE

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

示例值 :1

PREFIX_NONXA

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

前缀_PASSWORD

定义数据源的密码。

示例值: password

PREFIX_TX_ISOLATION

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

示例值: TRANSACTION_READ_UNCOMMITTED

前缀_URL

定义数据源的连接 URL。

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

前缀_USERNAME

定义数据源的用户名。

示例值: admin

在 OpenShift 中运行此镜像时,POOLNAME_DATABASETYPE_SERVICE_HOSTPOOLNAME_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_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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.