CDI中的方法级事务超时设置

时间:2015-12-15 16:19:52

标签: spring java-ee transactions cdi

Spring中有一个 org.springframework.transaction.annotation.Transactional 注释,我们可以使用该注释为事务提供方法级别超时。

我正在尝试使用CDI实现相同的目标。但J2EE等效注释 javax.transaction.Transactional 没有配置超时的选项。

我已经搜索了一段时间,但直到现在还找不到多少。是否可以在CDI中使用方法级别事务超时?如果没有那么任何其他方式来实现它?

//@Transactional(isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRES_NEW, timeout=5_MIN, rollbackFor = {OHException.class })
@Transactional( value= TxType.REQUIRES_NEW,rollbackOn= {OHException.class})
public <T> T saveDomainObject(T object) throws OHException{
.....
}

1 个答案:

答案 0 :(得分:1)

不幸的是,JTA及其ratio注释无法实现。 通常,您只能为所有方法设置事务超时全局

但是我知道的其他方法可以实现类似的目标:

  • 如果您使用的是JBoss / WildFly,那么您可以使用其特定的注释:javax.transaction.Transactional,这正是您所寻找的。
  • 您可以使用查询提示为特定查询配置超时。例如,因为JPA 2.0有一个@org.jboss.annotation.ejb.TransactionTimeout提示 - 它的用法看起来像javax.persistence.query.timeout

但是,在大多数情况下,最简单的解决方案是增加所有交易的超时。

希望它有所帮助。