草庐IT

分布式事务

全部标签

java - 你如何重构@Transactional 方法来拆分非事务部分

我有一个作为独立Java应用程序的一部分运行的数据访问类。它目前正在工作,这意味着定义了一个事务管理器,但我想重构该类以减少事务的范围,但如果我这样做,我会得到org.hibernate.HibernateException:NoHibernateSessionboundtothread,andconfiguration不允许在此处创建非事务性,这意味着移动@Transactional以某种方式阻止了它被识别。我的原始版本的重构方法是私有(private)的,但我发现有人建议将其更改为公开的,因为在某些情况下注释不会被提取。publicclassDoStuff{@Transaction

java - 使用 EJB 计时器的 WebSphere 中的 Bean 事务超时

通过JBoss/Wildfly,可以使用@TransactionTimeout专有注释并为特定sessionBean定义事务超时。使用IBMWebSphere的等效方法是什么?我们正在使用EJBTimer,其中一个Bean需要一个多小时才能完成。Wildfly示例代码:importorg.jboss.ejb3.annotation.TransactionTimeout;@Stateless@TransactionTimeout(value=7200)publicclassTimerBean{}注意:使用WebSphere8.5。修改全局事务时间不是一个选项,我们需要为特定的sessio

java - Spring 事务中 REQUIRES_NEW 和 NESTED 传播行为的差异

前言首先:它不是Differencesbetweenrequires_newandnestedpropagationinSpringtransactions的副本-我读了它,但没有找到我的问题的答案问题:阅读我提到的主题后,我明白了物理交易计数中传播级别的主要区别:2dbtransactions-forREQUIRES_NEWforouterandforinnermethod1db事务-用于外部和内部方法的NESTED。如果底层数据库不支持保存点,它将无法工作但从我的观点来看,逻辑似乎是相同的。如何理解在实践中使用哪个级别?有什么用例可以理解吗?行为差异的方便示例?附言我想对于其他交易

java - 我应该在远程工作站的哪个位置放置 CSV 配置文件以进行分布式 JMeter 测试?

我想做JMeter分布式测试。手册中说,首先我应该在远程节点上启动jmeter-server,然后我应该更新jmeter.config并运行jmeter在主节点上。我做了所有这些步骤。我的测试计划包括使用CSV配置文件。如果我只从1个(主)节点进行测试-那么一切都很好。但是当我尝试分布式测试时,所有测试都失败了。一些调查表明,远程节点发送请求时没有替换${..}-like参数。请求看起来像POSTdata:5|0|6|http://host.com/portal/|67D1C612DCF291DCD0F71AD15E404F37|host.ui.client.services.Logi

java - Spring 和 Hibernate 的事务管理使非 Activity 事务成为可能

我正在使用Spring和Hibernate管理一个JavaWeb应用程序。我使用Spring和Hibernate工具来处理持久性级别,因此我不需要提交\回滚我的事务。该应用程序是并发的,因此用户可以修改相同的记录,我决定使用ReadCommitted作为隔离级别。问题是有时我会在日志中发现JDBC错误,并且所有下一个请求都会出现相同的错误,从而阻止应用程序行为。这些是事务管理中涉及的组件:@BeanpublicSpringLocalSessionFactoryBeansessionFactory(DataSourcedataSource){SpringLocalSessionFacto

java - 让 DbUnit 与 Hibernate 事务一起工作

我在尝试将Hibernate事务中所做的更改推送到数据库以使DbUnit在我的测试用例中正常工作时遇到问题。似乎DbUnit没有看到Hibernate所做的更改,因为它们尚未在事务结束时提交......而且我不确定如何重组我的测试用例以使其正常工作。这是我过度简化的测试用例来证明我的问题:-@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations={"classpath:applicationContext-test.xml"})@TransactionConfiguration(transaction

java - Spring 管理事务、EclipseLink JPA、自定义隔离级别

我怀疑这个很尴尬,我做错了很糟糕,但请耐心等待。我有一个带有Spring管理的事务的Spring应用程序。它使用EclipseLinkJPA。我有一个执行findByNativeQuery()后跟merge()的方法。我需要在真正的串行事务隔离级别中发生这种情况。我尝试添加@Transactional(isolation=Isolation.SERIALIZABLE)这不起作用,因为org.springframework.orm.jpa.vendor.EclipseLinkJpaDialect#beginTransaction不支持任何事务隔离级别,但默认。因此,我尝试进入Elcips

java - 无法为当前线程获取事务同步 session

从xml-转换为Java-Config的Spring4/Hibernate4项目出现以下异常。org.hibernate.HibernateException:Couldnotobtaintransaction-synchronizedSessionforcurrentthread该项目在Eclipse中启动时没有错误,但在第一次请求时出现异常。在我的ConfigRoot类中,我为DataSource、SessionFactory、HibernateTransactionManager配置了@Bean>,改进的命名策略。我所有的@Service服务都带有@Transactional注释

java - 被事务 : @console:Oracle (INTELLIJ CLIENT) 锁定

我正在使用IntelliJIDEA14.1.4,最近我们将数据库连接到客户端并且它工作正常,直到最近我们开始出现错误[2015-09-2810:12:55]lockedbytransaction:@console:Oracle->@localhost现在我们无法执行任何交易,因为我们不断收到相同的错误。我们尝试用谷歌搜索错误,但找不到任何解决问题的方法。任何帮助将不胜感激!!! 最佳答案 我在之前运行的查询失败后发生了这种情况——使用PyCharm,而不是IntelliJ,但它是同一个JetBrains系统。我没有打开自动提交。由于

java - 如何在 DDD 中管理域逻辑和事件之间的事务?

我正在研究DDD和事件源中的编程。我看到一个示例,当调用域逻辑(例如Order.placeOrder())时,它会发布一个事件(例如OrderPlaced)。并且该事件将作为事件存储发送到MQ。域逻辑(Order.placeOrder())应该是一个原子API,如果使用Spring作为事务管理器,它应该有@Transactional注释。现在我的问题是:如何确保数据库更改和事件发送在同一个事务中?即,如果在将数据提交到数据库时出现任何错误,则事件永远不会发送到MQ。我知道有像XA或2阶段提交这样的解决方案来强制数据库更新并在同一事务中发送MQ消息。但现在似乎并没有被广泛使用。如果还是用