假设我有一个CDI需要
如果我想在IO操作运行时避免长事务,那么最好的模式是什么?我知道我可以在-2中使用@Transactional(Transactional.TxType.REQUIRES_NEW),但对于我的下一个用户来说,在-1中打开的交易只会暂停。
直到知道我对非容器管理的事务使用了旧的JBoss 4之前,我经常这样做:
我知道这种模式可能有一些不相关的数据,因为您更新了在事务之外获得的数据,但是在某些情况下它是可以的。
有什么模式可以模仿旧的非容器管理事务的管理方式。如果不管理分离的实例是可能的话?
在某些情况下,编辑来自@Alexander Langer的响应是一个很好的选择。但如果有可能的话,我也想知道一种可以替代的办法,不需要工作。因为point -2- (长IO操作)只能是对外部WS的简单调用,以满足请求。
通常情况下,在这上面持有一笔交易没有任何问题。但是,如果由于某种原因,外部WS无法正常工作,并且需要大量时间来响应,那么如果事务开始累积,这将是一个大问题。事实上,这可能是一个问题,一个简单的事实,即不需要事务并从池中保存数据库连接的EntityManager开放端。
我知道存在超时,但总的来说,我想知道一种可用的模式,以减少简单情况下的事务时间。或者知道它是否简单,一个反模式的EE7,如果不涉及批处理作业。
发布于 2015-03-22 10:11:55
看看Java 7中引入的Java批处理,这正是您想要的。
https://stackoverflow.com/questions/29180812
复制相似问题