3.4. 配置事务对象存储
事务需要存储对象的位置。对象存储的一个选项是 JDBC 数据源。如果系统性能特别值得关注,则 JDBC 对象存储可能比文件系统或 ActiveMQ 日志对象存储慢。
如果 事务 子系统配置为使用 Apache ActiveMQ Artemis 日志作为事务日志的存储类型,则不允许两个 JBoss EAP 实例使用相同的目录来存储日志。应用服务器实例无法共享同一位置,各自必须为其配置唯一的位置。
丢失事务对象存储可能会导致数据一致性丢失。因此,对象存储需要置于 安全 驱动器上。
使用 JDBC 数据源作为事务对象存储
按照以下步骤,将 JDBC 数据源用作事务对象存储。
将数据源的
jta属性设为false。/subsystem=datasources/data-source=TransDS:write-attribute(name=jta, value=false)
/subsystem=datasources/data-source=TransDS:write-attribute(name=jta, value=false)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
jdbc-store-datasource属性设置为数据源要使用的 Java 命名和目录接口名称,例如java:jboss/datasources/TransDS。/subsystem=transactions:write-attribute(name=jdbc-store-datasource, value=java:jboss/datasources/TransDS)
/subsystem=transactions:write-attribute(name=jdbc-store-datasource, value=java:jboss/datasources/TransDS)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
use-jdbc-store属性设为true。/subsystem=transactions:write-attribute(name=use-jdbc-store, value=true)
/subsystem=transactions:write-attribute(name=use-jdbc-store, value=true)Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 重新启动 JBoss EAP 服务器以使更改生效。
事务 JDBC 存储属性
下表列出了与 JDBC 对象存储相关的所有可用属性。
此表中的属性名称会在管理模型中出现时列出,例如使用管理 CLI 时。请参阅位于 EAP_HOME/docs/schema/wildfly-txn_4_0.xsd 的架构定义文件,以查看 XML 中出现的元素,因为管理模型可能会有所不同。
| 属性 | 描述 |
|---|---|
| use-jdbc-store |
将它设置为 |
| jdbc-store-datasource | 用于存储的 JDBC 数据源的 Java 命名和目录接口名称。 |
| jdbc-action-store-drop-table |
是否在启动时丢弃和重新创建操作存储表。默认值为 |
| jdbc-action-store-table-prefix | 操作的前缀存储表名称。 |
| jdbc-communication-store-drop-table |
是否在启动时丢弃和重新创建通信存储表。默认值为 |
| jdbc-communication-store-table-prefix | 通信存储表名称的前缀。 |
| jdbc-state-store-drop-table |
是否在启动时丢弃和重新创建状态存储表。默认值为 |
| jdbc-state-store-table-prefix | 状态存储表名称的前缀。 |
使用 ActiveMQ Journal 对象存储
按照以下步骤,使用 ActiveMQ 日志对象存储:
将
use-journal-store属性设为true。/subsystem=transactions:write-attribute(name=use-journal-store,value=true)
/subsystem=transactions:write-attribute(name=use-journal-store,value=true)Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 重新启动 JBoss EAP 服务器以使更改生效。