我正在使用EJB以利用:
并发(我没有创建2个线程,而是将工作分成2个 EJB bean)。
池化(我使用无状态EJB很多,我喜欢池的想法 包含特定数量的bean)。这样,我不怕 内存耗尽。内存使用情况更容易预测。)
异步处理(我只需要一个注释)。
嗯,问题是我在MongoDB中使用它,所以我不需要任何交易。我可以使用@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
和@TransactionAttribute(TransactionAttributeType.NEVER)
注释,但......这意味着我必须在任何地方指定它?
默认情况下是否禁用EJB事务?
答案 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事务是以分层方式执行的,即如果被调用的第一个方法不支持方法“子方法”以相同的方式处理