7.7.4. 配置事务子系统,以使用 JDBC 存储进行事务日志
如果系统不提供文件系统来存储 事务日志
,请使用 JBoss EAP S2I 镜像配置 JDBC 对象存储。
重要
当 JBoss EAP 部署为可引导 JAR 时,S2I 环境变量不可用。在这种情况下,您必须创建 Galleon 层,或配置 CLI 脚本以进行必要的配置更改。
JDBC 对象存储可以使用环境变量 TX_DATABASE_PREFIX_MAPPING
进行设置。此变量的结构与 DB_SERVICE_PREFIX_MAPPING
相同。
前提条件
- 您已基于环境变量的值创建了数据源。
-
您已确保数据库和通过 JDBC 对象存储通信
的交易管理器
之间存在一致的数据读取和写入权限。如需更多信息,请参阅配置 JDBC 数据源
流程
通过 S2I 环境变量设置和配置 JDBC 对象存储。
示例
# Narayana JDBC objectstore configuration via s2i env variables - name: TX_DATABASE_PREFIX_MAPPING value: 'PostgresJdbcObjectStore-postgresql=PG_OBJECTSTORE' - name: POSTGRESJDBCOBJECTSTORE_POSTGRESQL_SERVICE_HOST value: 'postgresql' - name: POSTGRESJDBCOBJECTSTORE_POSTGRESQL_SERVICE_PORT value: '5432' - name: PG_OBJECTSTORE_JNDI value: 'java:jboss/datasources/PostgresJdbc' - name: PG_OBJECTSTORE_DRIVER value: 'postgresql' - name: PG_OBJECTSTORE_DATABASE value: 'sampledb' - name: PG_OBJECTSTORE_USERNAME value: 'admin' - name: PG_OBJECTSTORE_PASSWORD value: 'admin'
验证
您可以通过检查
standalone-openshift.xml
配置文件oc rsh <podname> cat /opt/eap/standalone/configuration/standalone-openshift.xml
来验证数据源配置和事务子系统配置。预期输出:
<datasource jta="false" jndi-name="java:jboss/datasources/PostgresJdbcObjectStore" pool-name="postgresjdbcobjectstore_postgresqlObjectStorePool" enabled="true" use-java-context="true" statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}"> <connection-url>jdbc:postgresql://postgresql:5432/sampledb</connection-url> <driver>postgresql</driver> <security> <user-name>admin</user-name> <password>admin</password> </security> </datasource> <!-- under subsystem urn:jboss:domain:transactions --> <jdbc-store datasource-jndi-name="java:jboss/datasources/PostgresJdbcObjectStore"> <!-- the pod name was named transactions-xa-0 --> <action table-prefix="ostransactionsxa0"/> <communication table-prefix="ostransactionsxa0"/> <state table-prefix="ostransactionsxa0"/> </jdbc-store>
其他资源
- 有关使用管理控制台或管理 CLI 创建数据源的更多信息,请参阅 JBoss EAP 配置指南中的创建数据源 。