繁体   English   中英

是否有支持 XA 分布式事务的内存中 JDBC 数据库?

[英]Are there any in-memory JDBC databases that support XA distributed transactions?

我想使用内存数据库来测试我的应用程序,但它需要支持XA 分布式事务 我对内存数据库的第一个想法是HSQLDB ,但它似乎不支持 XA。 有吗?

看起来H2支持这一点。

H2数据库HSQLDB都支持它,即使在2019年也找不到任何其他Java嵌入式数据库。但它们都没有正确实现:一旦客户端断开连接,事务就会回滚。 根据 X/Open 规范,当数据库准备一个事务时,它的数据应该被持久存储并且必须可以在以后提交。

在 H2 中,XA 代码未维护

如果你想要一个支持 XA 的数据库用于你的测试,你可以通过TestContainers项目使用 Postgres:

@ClassRule
public static PostgreSQLContainer container = new PostgreSQLContainer<>("postgres:12.1")
        .withCommand("postgres -c max_prepared_transactions=10");

然后创建一个这样的数据源:

PGXADataSource dataSource = new PGXADataSource();
dataSource.setURL(container.getJdbcUrl());
dataSource.setUser(container.getUsername());
dataSource.setPassword(container.getPassword());
dataSource.setDatabaseName(container.getDatabaseName());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM