草庐IT

事务处

全部标签

java - Spring Batch Reader 的游标在 JTA 事务管理步骤中提前关闭

相关步骤的工作配置如下:Step、SpringBatchJobRepository和业务存储库(使用各种数据源)都使用JTA事务管理器。步骤“myStep”使用JdbcPagingItemReader。WebLogic、OracleXE和/或EE我想分析“myStep”中JdbcCursorItemReader的性能,但是在第一次提交后,第二个block的第一次读取将失败并出现java.sql.SQLException:结果集已关闭。我怀疑可能是JTA/XA驱动程序出于某种原因关闭了游标,因此我为“myStep”提供了一个简单的数据源事务管理器(在读者正在使用的数据源上),并且该步骤能

java - 在 Spring 中为不同数据源设置事务的正确方法?

我有一个应用程序需要连接到多个数据库。这是一个管理应用程序,主要用于管理不同数据库中的条目-我们不需要同时访问多个数据库,也不需要任何类型的分布式事务管理。基本上,应用程序的一个区域允许您在数据库A中创建小工具,而应用程序的另一个区域允许您在数据库B中配置类似的小工具。当只使用一个数据源时,我们已经设置了事务并完美地工作。配置如下所示:这会在CompanyService中的任何方法的任何执行上设置一个切入点并将事务建议与切入点相关联,切入点需要为名称以“create”开头的任何方法进行事务处理。交易建议与绑定(bind)到数据源的TransactionManager相关联。添加第二个(

java - Arjuna JTA 事务意外回滚

当我检查JBoss日志时,我看到了很多这样的错误2012-03-2912:01:27,358WARN@[com.arjuna.ats.jta.logging.loggerI18N][com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa][com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa]CouldnotfindnewXAResourcetouseforrecoveringnon-serializableXAResource2012-03-291

java - 不传播 Mule/Spring 事务

我对muleflow中的数据库事务有疑问。这是我定义的流程:我们的想法是,在checkIfExists中,我们验证某些数据是否存在(在数据库中),如果存在,我们将抛出异常。如果没有,我们将转到createNewOne并创建新数据。问题是如果我们同时运行流程,新对象将在createNewOne中创建多次,它们不应该像我们在它之前调用checkIfExists那样。这意味着事务无法正常工作。更多信息:createNewOne和checkIfExists都有以下注解:@Transactional(propagation=Propagation.MANDATORY)muleTransactio

java - 使用 JUnit4 进行测试时,Spring @transactional 不会启动事务

我有以下配置。org.hibernate.dialect.SQLServerDialecttruetrueorg.hibernate.dialect.SQLServerDialectfalsefalsetruetrue然后,当我运行具有插入语句的测试时,它们会产生这样的错误消息:javax.persistence.TransactionRequiredException:Executinganupdate/deletequeryatorg.hibernate.ejb.QueryImpl.executeUpdate(QueryImpl.java:47)经过深思熟虑,我尝试了这个:@Run

java - 非数据库应用事务

如何将非数据库操作封装到事务中?例如,假设我有一些顺序调用的方法/函数,一些更新数据库,一些更新文件系统上的文件,一些更新HttpSession中的参数,一些更新缓存等。如果是后者那些失败了,比如更新session,我如何回滚文件系统、数据库等中的所有其他更改?环境是一个JavaServlet容器,如Tomcat,带有Struts2之类的东西,任何RDBMS,一个持久层,如Hibernate或Ibatis,等等。 最佳答案 所有这些都必须是事务性资源,能够参与两阶段提交协议(protocol),以便执行您想要的操作。除非您的代码中有

java - 单事务跨多线程解决方案

据我了解,所有事务都是线程绑定(bind)的(即上下文存储在ThreadLocal中)。例如如果:我在事务父方法中启动事务在异步调用中使数据库插入#1让数据库在另一个异步调用中插入#2然后这将产生两个不同的事务(每个插入一个),即使它们共享相同的“事务”父级。例如,假设我执行了两次插入(并使用了一个非常简单的示例,即为了简洁起见,不使用执行程序或可完成的future等):@TransactionalpublicvoidaddInTransactionWithAnnotation(){addNewRow();addNewRow();}将根据需要执行两个插入,作为同一事务的一部分。但是,如

java - 将声明式和编程式事务与 Spring 和 JPA 监听器混合

我正在使用JPAEntityListener做一些额外的审计工作,并使用@Configurable将Spring管理的AuditService注入(inject)我的AuditEntryListener。AuditService生成AuditEntry对象的集合。AuditService本身是一个Singleton范围的bean,我想将所有AuditEntry对象收集在一个公共(public)key下,然后可以由最外层的服务层(调用持久调用的层调用,进而触发EntityListener)访问。我正在考虑使用Spring的TransactionSynchronizationManager

没有事务的 Java Google Appengine 分片计数器

我正在查看Java中的ShardedCounters示例:http://code.google.com/appengine/articles/sharding_counters.html我对增量方法的实现有疑问。在python中,它显式地包装了get()和事务中的增量。在Java示例中,它只是检索并设置它。我不确定我是否完全理解数据存储和事务,但似乎关键更新部分应该包含在数据存储事务中。我错过了什么吗?原代码:publicvoidincrement(){PersistenceManagerpm=PMF.get().getPersistenceManager();Randomgenera

java - 如何在多线程之间共享一个事务

我们遇到了一个使用多线程的场景。在主线程中,做一些逻辑和更新数据库,在某个时刻,它会调用另一个服务来更新数据库,该服务在另一个线程中运行。我们希望两个线程共享同一个事务,也就是说,任何一个线程中的操作失败,那么另一个线程中的操作也会被回滚。但是工作了几天,发现有帖子说JTA不支持多线程。目前我们使用Bitronix作为JTA提供者,有没有人知道Bitronix是否支持一个事务中的多线程?还是有任何其他JTA提供者支持这个(独立的JTA提供者不是J2EE容器)? 最佳答案 “多个线程可能同时与同一个全局事务相关联。”-JTA规范v1.