问题标签 [atomikos]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
750 浏览

liquibase - 使用 Atomikos 和 liquibase 时出现 AtomikosSQLException

我在让 liquibase 在我的 Spring Web 应用程序中使用 atomikos 时遇到问题。在我尝试将 liquibase 添加到混合物中之前,该项目运行良好。当我为我的项目配置 liquibase 时,我看到了一个异常。关键是它说的地方:

原因:com.atomikos.jdbc.AtomikosSQLException:连接已关闭 - 不再允许调用 hashCode!

Liquibase 正在尝试在已关闭的 JDBC 连接上调用 hashCode()。我试图弄清楚是否有一种方法可以配置 Atomikos(或者可能是 Hibernate?)以保持连接打开足够长的时间让 liquibase 做它的事情?

有人有使用 liquibase + atomikos 的经验吗?

这是堆栈跟踪:

0 投票
3 回答
5611 浏览

java - org.hibernate.HibernateException:没有在休眠升级时指定 TransactionManagerLookup

我正在运行 spring 4.1.4、hibernate 4.3.8、atomikos 3.9.3、java 8、tomcat 8。

当我启动我的服务器时,我在 localhost.log 中看到了上述异常,但除了我已经配置它的位置之外,我不确定在哪里配置 TransactionManagerLookup。这在升级 hibernate 之前没有发生,因此很可能是版本控制问题。有人可以帮忙吗?

仅供参考:catalina.out 没有任何用处。只是:

我的 appContext 定义:

完整的堆栈跟踪是:

编辑:Atomikos 事务管理器是这样配置的

编辑2:

我想我需要在这里澄清一下。我有一个名为 AbstractMyDAO 的 DAO 对象(正如您从堆栈中看到的那样)。在这个对象中定义了一个会话工厂

当调用 currentSession 时,会抛出上述错误,因为 hibernate 找不到与此会话工厂关联的事务管理器查找。

这个会话工厂在我的应用上下文文件中定义如下:

如您所见,正在定义属性 hibernate.transaction.manager_lookup_class 但在创建 bean 时找不到,我不知道为什么。配置有变化吗?

编辑 3: 当我调试时: final JtaPlatform jtaPlatform = factory().getServiceRegistry().getService( JtaPlatform.class );

它返回一个 NoJTAPlatform。我想这是我的问题。

编辑 4:似乎没有任何东西可以实现适用于 tomcat 的 JtaPlatform 或者我是不是很精神?

0 投票
2 回答
1101 浏览

java - 使用 JTA 时设置 Ehcache 超时

我已经使用设置将 Ehcache 连接到我的 JTA 事务管理器(由 Atomikos 提供)中cacheConfiguration.setTransactionalMode("xa");,并且在我的应用程序启动大约 15 秒后收到以下错误:

当我的应用程序第一次启动时,它会在单个事务中执行一些初始设置,大约需要 60 秒才能完成。因此,我需要将 15 秒超时增加为更大的值,但找不到控制的位置。从查看 Ehcache 文档看来,这应该由 JTA 控制,但我已经为 UserTransaction 和 TransactionManager 设置了默认超时:

任何指针将不胜感激。

0 投票
2 回答
3930 浏览

spring - 在 Spring Batch 中为 Hibernate 配置 Atomikos UserTransactionManager

我需要做的是在三个不同的 Oracle 数据库上进行分布式事务。其中一个必须通过 JDBC 访问,另外两个必须通过 Hibernate 访问。这是我的 Atomikos 配置:

Hibernate 配置的灵感来自于在这个主题上找到的解决方案:

还有一个名为 SpringJtaPlatformAdapter 的小类:

当我运行批处理时,我可以验证:

  1. Atomikos的atomikosUserTransactionandatomikosTransactionManager是首先构造的
  2. mainTransactionManager之后被初始化
  3. setJtaTransactionManager调用my的方法SpringJtaPlatformAdapter, 和 的内存地址sTransactionManagersUserTransaction之前创建的一致
  4. locateTransactionManagerSpringJtaPlatformAdapter调用两次(每个持久性单元一个)
  5. 然后执行我的休眠代码,我的实体被正确初始化
  6. 通过 JDBC 访问的数据库被更新
  7. 通过 Hibernate 访问的数据库没有更新(好像发生了回滚)

在运行期间,日志中只出现一个警告:

也许这会有所帮助,我个人没有收到警告信息。

根据 Maven,我将 Spring ORM 3.2.0 与 Hibernate 4.2.3 和 Atomikos 3.8.0 一起使用。

0 投票
0 回答
1342 浏览

spring - 分布式事务,事务不再活跃

我们正在考虑使我们的交易分布式。我们实施了一个小项目作为测试人员,以确保它可以适合其他项目。

起初我们通过注解和 java 类设置配置,它运行良好,但我们想尝试基于 .XML 的配置以避免创建太多配置类。

我们正在使用 JUnit 进行测试,而不是在部署在服务器中的适当 Web 应用程序中进行测试,即使在加载实体管理器、事务配置和注入 @Services 时它似乎也能正常工作,但在调用 @Repository 中的方法时会出现以下错误:

我们正在使用 Springboot 1.2.2、Atomikos 3.9.3、Hibernate 4.3.7 和 SQL Server 2008。

我们的大部分配置都在 persistence.xml 中:

在 applicatioContext.xml 中:

我的@Repositories 是空的,它们只是扩展了JpaRepository,实际上它们只是接口。

我的测试课:

我在帖子的限制中,需要的任何其他信息将在评论中提供。

关于为什么交易似乎没有加入 Hibernate 的任何建议?

谢谢你。

0 投票
0 回答
1107 浏览

oracle - 如何使用 Hibernate 在 SQL 语句上设置超时

我尝试过的...

使用标准:

=> 零效应

使用 HQL:

=> 零效应

甚至在事务级别上尝试过:

一些效果;执行查询后会引发异常,但事务在 1 秒后未中止。

这是在带有 Atomikos TM 的 Jetty 服务器上运行的。

如何在特定查询上指定超时,以便在超时后中止调用(这不会是 1 秒,这只是为了更快地测试)?

更新

当运行相同的测试但绕过 Atomikos/Hibernate/Spring(因此使用普通 JDBC)时,超时确实有效(大约至少;它不会正好是 1 秒,在 H2 上它非常接近,在 Oracle 上有时超过 2 秒)。结果如预期:SQLException: ORA-01013: user requested cancel of current operation

更新

在调试休眠时,我看到在 PreparedStatement 上设置了超时,但它似乎没有效果。

0 投票
2 回答
1102 浏览

spring-boot - spring-boot-starter-jta-atomikos 和 spring-boot-starter-batch

是否可以在一个应用程序中同时使用这两个启动器?

我想将 CSV 文件中的记录加载到数据库表中。Spring Batch 表存储在不同的数据库中,所以我假设我需要使用 JTA 来处理事务。

每当我将@EnableBatchProcessing 添加到我的@Configuration 类时,它都会配置一个PlatformTransactionManager,它会阻止Atomikos 自动配置它。

是否有任何 spring boot + batch + jta 示例可以显示如何执行此操作?

非常感谢,詹姆斯

0 投票
1 回答
4049 浏览

spring - Spring Boot JTA 错误

我正在尝试将 JTA 添加到我的项目中。我将以下内容添加到我的 Gradle 文件中,现在我的应用程序将无法启动。之前运行良好。

我收到以下错误。

这是我的持久性配置文件。

我的 application.yml 文件

0 投票
1 回答
666 浏览

java - Atomikos + OpenJpa +DB2 XA 独立 - 不允许 setAutocommit(true)

我有一个春季批处理项目,并且正在使用 Atomikos 进行事务管理。

这是我的数据源配置和 atomikos 配置。

当我调用 spring 存储库来更新数据库时,它会抛出一个错误,提示 Invalid operation: setAutoCommit(true) is not allowed during Global Transaction。请参阅下面的堆栈跟踪。对此的任何想法都会非常有帮助。

0 投票
2 回答
1471 浏览

java - 将JTA + JPA与Spring一起使用时如何插入数据库

我有一个使用 JTA + JPA 和 Spring(版本 4)的简单 Web 应用程序。我正在使用 Atomikos JTA 事务管理器进行 XA 事务。此事务涉及将 EmployeeA 实体插入到 DatabaseA 中,并将另一个 EmployeeB 实体插入到另一个 DatabaseB 中。

奇怪的是,应用程序没有抛出任何错误,但没有将输入插入到数据库中。


服务类实现:

DAO 实现和接口:


Servlet-Context.xml



持久性.xml

任何帮助都是高度请求的。