没有事务的EJB

时间:2015-10-22 08:55:45

标签: ejb

我正在使用EJB以利用:

  1. 并发(我没有创建2个线程,而是将工作分成2个 EJB bean)。

  2. 池化(我使用无状态EJB很多,我喜欢池的想法 包含特定数量的bean)。这样,我不怕 内存耗尽。内存使用情况更容易预测。)

  3. 异步处理(我只需要一个注释)。

  4. 嗯,问题是我在MongoDB中使用它,所以我不需要任何交易。我可以使用@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)@TransactionAttribute(TransactionAttributeType.NEVER)注释,但......这意味着我必须在任何地方指定它?

    默认情况下是否禁用EJB事务?

2 个答案:

答案 0 :(得分:6)

在EJB 3.0容器中,使用:

注释EJB(或EJB方法)
@Stateless
@TransactionManagement(TransactionManagementType.BEAN)
@TransactionAttribute(value=TransactionAttributeType.NEVER)
public class YourBean

对于BEAN管理,或者对于CONTAINER管理而言:

@Stateless
@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(value=TransactionAttributeType.NEVER)
public class YourBean

答案 1 :(得分:2)

默认值由容器管理,但如果您不指定任何操作,我认为您可以解决问题。

或者注释所有Ejb不支持交易

@Stateless
@TransactionManagement(TransactionManagementType.NEVER)
public class YourBean

请记住,ejb事务是以分层方式执行的,即如果被调用的第一个方法不支持方法“子方法”以相同的方式处理