作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在下面的代码中,我尝试强制特定 bean 的事务超时,将其事务时间设置为短于该方法完成所需的时间。
超时设置为3秒,该方法完成所需的时间为5秒。
我正在使用可移植解决方案,它指的是 BMT 和使用 setTransactionTimeout
设置超时的组合。方法。
我希望交易会失效并抛出异常,但这并没有发生。
我做错了什么?
@Singleton
@Startup
@TransactionManagement(TransactionManagementType.BEAN)
public class TimerSingleton {
@Inject
private UserTransaction ut;
@PostConstruct
public void execute() throws Exception {
ut.begin();
ut.setTransactionTimeout(3); // Transaction should timeout after 3 seconds
System.out.println(">>> Executing...");
Thread.sleep(5000); // Block for 5 seconds
ut.commit();
System.out.println(">>> Completed");
}
}
该方法已完全执行:
17:00:12,138 INFO [stdout] (ServerService Thread Pool -- 85) >>> Executing...
17:00:17,139 INFO [stdout] (ServerService Thread Pool -- 85) >>> Completed
我正在使用 Wildfly 8.2,并且我了解 @TransactionTimeout
注释,但它是专有的,我想知道如何以可移植的方式控制它。
最佳答案
在调用 begin
方法之前必须调用 setTransactionTimeout
方法,这是因为 setTransactionTimeout
修改与以下启动的事务关联的超时值使用 begin
方法启动当前线程。
关于java - UserTransaction.SetTransactionTimeout 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28096898/
在下面的代码中,我尝试强制特定 bean 的事务超时,将其事务时间设置为短于该方法完成所需的时间。 超时设置为3秒,该方法完成所需的时间为5秒。 我正在使用可移植解决方案,它指的是 BMT 和使用 s
我是一名优秀的程序员,十分优秀!