草庐IT

transaction_batch

全部标签

java - 单元测试中的@Transactional 阻止调用@PostLoad

我有以下测试:publicclassBook{publicbooleanpostLoadInvoked;@PostLoadprivatevoidonPostLoad(){postLoadInvoked=true;}}publicclassMyIntegrationTestextendsAbstractIntegrationTest{@AutowiredprivateBookDAObookDAO;@TestpublicvoidloadBooks(){Bookbook=bookDAO.findOne(...);assertTrue(book.postLoadInvoked);}}此测试按原

java - Spring Batch - 集群环境 - 故障转移机制

问题:springbatch最支持的failover策略是什么?必须关注资源使用,故障转移机制。有什么建议吗?用例-必须运行Spring批处理以从服务器读取文件(将由另一个应用程序放在服务器上)并处理它。环境是集群的。因此,可能有多个服务器实例会触发批处理作业,以在到达时尝试读取同一文件。我的想法:可以进行轮询以检查文件是否到达并调用spring批处理作业。由于它是集群的,我们可以使用主动/被动策略来轮询。也可以使用其他类型,例如循环法或时间片。如果我不清楚,请原谅我。如果有什么不清楚,我可以解释。 最佳答案 据我了解http://

java - @Transactional 的自定义快捷方式注释不起作用

我正在尝试创建自定义注释以便快捷方式,正如文档中所引用的那样:@Target({ElementType.METHOD,ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Transactional("order")public@interfaceOrderTx{}但是,当我使用自定义注解对方法进行注解时,出现异常:Nohibernatesessionboundtothread,andconfigurationdoesnotallowcreation...等使用@Transactional注释该方法时效果很好。由于我注释的方法不属于

java - Spring Transactions 以确保跨 2 个 REST 服务的一致性?

我有2个RESTapi,我在“事务”中“保存”数据。我很想听听有关如何确保第二个出现问题时第一个可以“回滚”的建议。我目前有一个重试循环,如果失败,我会向第一个调用发送一个删除。它工作正常,我只是好奇是否可以使用spring事务来处理它。就此而言,还有其他选择吗? 最佳答案 如果像这样的事情是可能的,那将是非常有趣和有用的,但我认为这是不可能的,因为没有标准的API用于RESTAPI的提交/回滚,就像JDBCAPI一样。使用Spring,您永远不能简单地将方法标记为@Transactional,因为Spring不知道如何“回滚”您在

java - 使用 2 个不同的数据源 : Spring batch

我有2个不同的数据源,一个用于读取,另一个用于写入结果,如下所示:ItemReader应该从dataSource_1获取数据。ItemWriter应该将数据写入dataSource_2。知道reader和writer在同一个tasklet中。根据文档,我们可以在tasklet中配置单个事务管理器在这种情况下,如何使用这里的事务管理器?我不能依赖容器并且我没有使用ORM层(JPA..),我使用直接JDBC驱动程序读取数据库1并写入数据库2。当前session:我如何使用SpringBatch配置JTA/XA事务(Atomikos)? 最佳答案

java - 为列表中的每个项目重复 Spring Batch 流程的步骤

我如何实现一个必须读取列表然后为列表中的每个项目重复一个或多个步骤的SpringBatch作业?我目前正在一步读取列表,然后将其放入作业上下文中。但是作业上下文保留在数据库中,如果它变得太大,则必须使用CLOB而我无权访问它。所以我正在寻找一种不涉及将整个列表存储在作业上下文中的解决方案。当然,我可以简单地将列表放在局部变量中。但我很好奇是否有更像SpringBatch的选项。 最佳答案 除了上面关于首先构建作业的评论(我倾向于同意)之外,如果您使用最新的3.0.0.M3,您可以创建一个JobScope'ed在您循环执行各个步骤时可

java - 如何使用Spring Batch实现步骤的分布式处理

使用Spring批处理,我希望我的步骤跨节点分布,并让它们针对给定的作业执行。我有一个用例,其中一个作业有多个步骤,每个步骤都可以在托管应用程序的多个节点中运行。有人试过这个吗?任何关于相同的想法将不胜感激! 最佳答案 有两种方法:Remotechunking-您在主节点上读取数据并在从节点上处理/写入数据Remotepartitioning-您将数据集分成多个分区,并在远程节点中读取/处理/写入您的分区。所以master只是协调和决定如何划分分区。我写了一本关于EnterpriseSpring的书,并创建了这两种方法的示例。这些是

java - Quartz 作业抛出 InvalidDataAccessApiUsageException : no transaction is in progress;

我有一个非常简单的quartz作业,它试图从数据库中获取打印机记录,我收到此错误:org.springframework.dao.InvalidDataAccessApiUsageException:notransactionisinprogress;nestedexceptionisjavax.persistence.TransactionRequiredException:notransactionisinprogressjavax.persistence.TransactionRequiredException:notransactionisinprogress这是应用程序的代码

java - 使现有的 Spring Batch 应用程序在多个节点上运行

我们有现有的SpringBatch应用程序,我们希望使其可扩展以在多个节点上运行。SpringBatch的可扩展性文档涉及代码更改和配置更改。我只是想知道这是否可以仅通过更改配置来实现(添加新类并将其连接到配置中很好,但只是想避免对现有类进行代码更改)。非常感谢您的提前帮助。 最佳答案 这真的取决于你的情况。具体来说,为什么要在多个节点上运行?您试图克服的瓶颈是什么?SpringBatch开箱即用地处理跨多个节点扩展的典型两个场景是远程分块和远程分区。两者都是主/从配置,但每个都有不同的用例。当步骤中的处理器是瓶颈时,使用远程分块。

java - spring batch 在作业存储库和实际任务之间使用不同的事务管理器

我使用SpringBatch使用2个(可能更多,为简单起见假设2个)数据库。一个用于存储所有作业数据(所有BATCH_*表)。另一个用于实际运行我的业务逻辑数据。有些事情我不太明白。当我声明我的JobRepository时,我已经指定了我的TransactionManager,为什么我必须在我的tasklet上再做一次?(我不是故意使用默认名称的)我目前正在为tasklet提供与我的JobRepository相同的TrasactionManager,它管理与我在步骤中所做的不同的连接。这是否意味着我在作者或读者内部进行了自己的事务管理?如果#2为真,HowdoesSpringBatch