搜索

11.4. datasources

download PDF

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

最重要的环境变量是 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 镜像具有 postgresqlmysql 的驱动程序。

警告

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

数据库驱动程序

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

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

  • MySQL
  • PostgreSQL

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

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

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

11.4.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

指定验证的频率,以毫秒为单位,当启用 background-validation 数据库连接验证机制时(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 事务隔离级别。

示例值: TRANSACTION_READ_UNCOMMITTED

PREFIX_URL

定义数据源的连接 URL。

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

PREFIX_USERNAME

定义数据源的用户名。

示例值: admin

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_USERNAMETEST_PASSWORD

11.4.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.