[英]Are there any in-memory JDBC databases that support XA distributed transactions?
看起来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.