EJB 3 是 Java 企业版(Java Enterprise Edition,简称 J2EE)的一个关键组件,它为实现分布式系统的业务服务提供了一个可扩展的体系结构。下面是一些关于 EJB 3 事务传播的基本信息。
EJB 3 事务传播主要分为以下三类:
这是默认的事务传播行为。在业务方法执行期间,如果有一个活跃的事务,则该事务将与业务方法共享。如果业务方法执行时没有活跃事务,则会抛出异常。
Exception in component resource injection
javax.ejb.EJBException: Transaction is not active
在这种事务传播行为中,新的事务将在执行业务方法时开始,而不管当前是否存在活跃的事务。如果在业务方法上提交或回滚事务,而其他事务的参与者尚未结束,则会抛出异常。
Exception in transaction: Rollback complete after failure
org.jboss.ejb3.exception.EJBTransactionRolledbackException: EJB Exception occurred during commit processing, error while creating EJB transaction: javax.transaction.RollbackException: Transaction marked for rollback. Please fix failed transaction before performing this operation.
这种事务传播行为允许 EJB 组件与现有的事务分离,即使没有创建新的事务。这是最不安全的事务行为。如果当前没有创建新事务的业务方法发生异常,则会抛出异常。
javax.ejb.EJBException: Could not commit EJB transaction; Nested exception is: javax.transaction.RollbackException: Transaction marked for rollback. Please fix failed transaction before performing this operation.
在选择合适的事务传播行为时,需要权衡业务的正确性和安全性。在具体实施时,还需要注意事务的隔离性和数据一致性等方面的问题。
领取专属 10元无门槛券
手把手带您无忧上云