问题标签 [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.
liquibase - 使用 Atomikos 和 liquibase 时出现 AtomikosSQLException
我在让 liquibase 在我的 Spring Web 应用程序中使用 atomikos 时遇到问题。在我尝试将 liquibase 添加到混合物中之前,该项目运行良好。当我为我的项目配置 liquibase 时,我看到了一个异常。关键是它说的地方:
原因:com.atomikos.jdbc.AtomikosSQLException:连接已关闭 - 不再允许调用 hashCode!
Liquibase 正在尝试在已关闭的 JDBC 连接上调用 hashCode()。我试图弄清楚是否有一种方法可以配置 Atomikos(或者可能是 Hibernate?)以保持连接打开足够长的时间让 liquibase 做它的事情?
有人有使用 liquibase + atomikos 的经验吗?
这是堆栈跟踪:
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 或者我是不是很精神?
java - 使用 JTA 时设置 Ehcache 超时
我已经使用设置将 Ehcache 连接到我的 JTA 事务管理器(由 Atomikos 提供)中cacheConfiguration.setTransactionalMode("xa");
,并且在我的应用程序启动大约 15 秒后收到以下错误:
当我的应用程序第一次启动时,它会在单个事务中执行一些初始设置,大约需要 60 秒才能完成。因此,我需要将 15 秒超时增加为更大的值,但找不到控制的位置。从查看 Ehcache 文档看来,这应该由 JTA 控制,但我已经为 UserTransaction 和 TransactionManager 设置了默认超时:
任何指针将不胜感激。
spring - 在 Spring Batch 中为 Hibernate 配置 Atomikos UserTransactionManager
我需要做的是在三个不同的 Oracle 数据库上进行分布式事务。其中一个必须通过 JDBC 访问,另外两个必须通过 Hibernate 访问。这是我的 Atomikos 配置:
Hibernate 配置的灵感来自于在这个主题上找到的解决方案:
还有一个名为 SpringJtaPlatformAdapter 的小类:
当我运行批处理时,我可以验证:
- Atomikos的
atomikosUserTransaction
andatomikosTransactionManager
是首先构造的 - 在
mainTransactionManager
之后被初始化 setJtaTransactionManager
调用my的方法SpringJtaPlatformAdapter
, 和 的内存地址sTransactionManager
与sUserTransaction
之前创建的一致- 的
locateTransactionManager
被SpringJtaPlatformAdapter
调用两次(每个持久性单元一个) - 然后执行我的休眠代码,我的实体被正确初始化
- 通过 JDBC 访问的数据库被更新
- 通过 Hibernate 访问的数据库没有更新(好像发生了回滚)
在运行期间,日志中只出现一个警告:
也许这会有所帮助,我个人没有收到警告信息。
根据 Maven,我将 Spring ORM 3.2.0 与 Hibernate 4.2.3 和 Atomikos 3.8.0 一起使用。
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 的任何建议?
谢谢你。
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 上设置了超时,但它似乎没有效果。
spring-boot - spring-boot-starter-jta-atomikos 和 spring-boot-starter-batch
是否可以在一个应用程序中同时使用这两个启动器?
我想将 CSV 文件中的记录加载到数据库表中。Spring Batch 表存储在不同的数据库中,所以我假设我需要使用 JTA 来处理事务。
每当我将@EnableBatchProcessing 添加到我的@Configuration 类时,它都会配置一个PlatformTransactionManager,它会阻止Atomikos 自动配置它。
是否有任何 spring boot + batch + jta 示例可以显示如何执行此操作?
非常感谢,詹姆斯
spring - Spring Boot JTA 错误
我正在尝试将 JTA 添加到我的项目中。我将以下内容添加到我的 Gradle 文件中,现在我的应用程序将无法启动。之前运行良好。
我收到以下错误。
这是我的持久性配置文件。
我的 application.yml 文件
java - Atomikos + OpenJpa +DB2 XA 独立 - 不允许 setAutocommit(true)
我有一个春季批处理项目,并且正在使用 Atomikos 进行事务管理。
这是我的数据源配置和 atomikos 配置。
当我调用 spring 存储库来更新数据库时,它会抛出一个错误,提示 Invalid operation: setAutoCommit(true) is not allowed during Global Transaction。请参阅下面的堆栈跟踪。对此的任何想法都会非常有帮助。
java - 将JTA + JPA与Spring一起使用时如何插入数据库
我有一个使用 JTA + JPA 和 Spring(版本 4)的简单 Web 应用程序。我正在使用 Atomikos JTA 事务管理器进行 XA 事务。此事务涉及将 EmployeeA 实体插入到 DatabaseA 中,并将另一个 EmployeeB 实体插入到另一个 DatabaseB 中。
奇怪的是,应用程序没有抛出任何错误,但没有将输入插入到数据库中。
服务类实现:
DAO 实现和接口:
Servlet-Context.xml
持久性.xml
任何帮助都是高度请求的。