假设我有一个需要
的CDI bean如果我想在IO操作运行时避免长事务,那么最佳模式是什么?我知道我可以在-2-中使用@Transactional(Transactional.TxType.REQUIRES_NEW),但据我所知,在-1-中打开的交易只会暂停。
直到知道我使用旧的JBoss 4而不是容器管理的事务而且我曾经这样做:
我知道该模式可能会有一些数据不一致,因为您更新了在事务外部获得的数据,但在某些情况下它可以正常。
是否有任何模式以管理方式模仿旧的非容器管理事务。如果可以不管理分离的实例?
修改 对于某些情况,来自@Alexander Langer的回复是一个不错的选择。但是如果有可能的话,我也想知道一个没有工作的替代方案。 因为点-2-(长IO操作)只能是对服务请求所需的外部WS的简单调用。
通常,持有交易没有任何问题。但是,如果由于某种原因外部WS无法正常工作并且需要花费大量时间来响应,那么如果事务开始累积则这是一个大问题。事实上,在没有事务的情况下保留EntityManager openend并从池中保存数据库连接这一简单事实可能是个问题。
我知道有超时,但总的来说,我想知道一个可用的模式,以最大限度地减少简单情况下的交易时间。或者,如果不涉及批处理作业,则知道EE7的反模式是否简单。