Atomikos 库有不兼容的包(从 javax.transaction 到 jakarta.transaction)

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

我在 Springboot 3 中有 Atomikos (6.0.0),并使用 Java 21。它可以工作,但使用 @Deprecated 类“ChainedTransactionManager(transactionManagerOne, transactionManagerTwo)”。如果事实上这种方式向我显示了很多我不喜欢的警告,我想使用推荐的方式。

到处找,告诉我用这个:

@Bean
public UserTransaction userTransaction() {
   //uses javax.transaction.*
    return new UserTransactionImp();
}

@Bean(initMethod = "init", destroyMethod = "close")
public TransactionManager transactionManager() {
   //uses javax.transaction.*
    return new UserTransactionManager(); 
}

@Bean
public PlatformTransactionManager platformTransactionManager() throws Throwable {
    //using jakarta.transaction.*
    return new JtaTransactionManager(userTransaction(), transactionManager());
}

但我的问题是对象 JtaTransactionManager 来自新的 spring-tx-6.1.6,它使用 jakarta.transaction.UserTransactionjakarta.transaction.TransactionManager 对象,但是对象 new UserTransactionImp() 和 new UserTransactionManager() 使用旧方法,在 jar transaction-jta-6.0.0 中使用 javax.transaction.UserTransactionjavax.transaction.TransactionManager

如何使 new UserTransactionImp() 和 new UserTransactionManager() 与“jakarta.transaction.*”兼容?

java spring-data-jpa transactions jta atomikos
1个回答
0
投票
您如何在项目中导入 Atomikos?使用启动器:

<dependency> <groupId>com.atomikos</groupId> <artifactId>transactions-spring-boot3-starter</artifactId> <version>6.0.0</version> </dependency>
我注意到 

transaction-jdbc

transaction-jms
transaction-jta
 会自动导入,并以 
jakarta
 作为分类器,因此在类路径中有 
transaction-jdbc-6.0.0-jakarta.jar
 等等。

查看repo目录(

https://repo1.maven.org/maven2/com/atomikos/transactions-jta/6.0.0/)实际上有两个不同的jar。

检查您是否正在导入“no-jakarta”模块,在这种情况下尝试使用启动器,或在 pom.xml 中指定分类器,如下所示:

<dependency> <groupId>com.atomikos</groupId> <artifactId>transactions-jta</artifactId> <version>6.0.0</version> <classifier>jakarta</classifier> </dependency>
    
© www.soinside.com 2019 - 2024. All rights reserved.