JEE-事务-与 JPA 实体管理

问题描述 投票:0回答:1

我们将一个 websphere 应用程序迁移到使用 spring boot 运行的云环境中。一切顺利!

第二步,我们将消息从 ibm-mq 迁移到 kafka。通过此迁移,我们不需要两阶段提交,因为 go、数据库和消息传递都需要一次提交到数据库。

现在我们应该使用 jakarta-namespace 升级到 spring boot 3 和 tomcat 10。在那里,我们面临着 orm、eclipselink 和 bitronix transactionmanager 的定义的问题:

final SessionManager manager = org.eclipse.persistence.sessions.factories.SessionManager.getManager();
Server server = (Server) manager.getSession(xmlLoader, ECLIPSELINK_SESSION_CONFIG, classLoader, false, false);
// Set the external transaction controller and use JTA transacion manager
server.setExternalTransactionController(eclipselinkTransactionController);

Eclipselink 3.0 支持 jakarta 命名空间,但 bitronix 不支持。

我看到两个解决方案:(1.)找到一个支持 jakarta 的 jee 事务管理器(即使我们不再需要两阶段提交)或(2.)我们使用 spring boot 中的 jpa 实体管理器。

我尝试了(2.),但在代码中它从 eclipse-link 获取了一个会话和一个工作单元,但工作单元为空。

EclipseLinkSessionService service = EclipseLinkSessionServiceFactory.createService();
UnitOfWork uow = service.getUnitOfWork();
uow.registerObject(myEntity);

有什么建议如何继续吗?

jakarta-ee transactions eclipselink bitronix two-phase-commit
1个回答
0
投票

如果您的事务管理器支持 JTA 并且您正在使用 JTA API,那么迁移到 Jakarta 命名空间将是相对容易的工作,因为大多数事务管理器都会执行相同的操作并且 API 不会更改,但如果不是,您可能需要进行一些更改和测试.

© www.soinside.com 2019 - 2024. All rights reserved.