赞
踩
- package javax.transaction;
-
- import javax.enterprise.util.Nonbinding;
- import javax.interceptor.InterceptorBinding;
- import java.lang.annotation.*;
-
- /**
- * 目的:事务注解@Transactional
- *
- * <p>@Transactional注解使CDI管理bean,类定义符合Java EE的规范,同时在
- * 类和方法级别上注解。注解的方法覆盖该注解的类。参考EJB规范。
- *
- * <p>该支持提供一个通道,使CDI拦截器执行必要的暂停、恢复等等。事务拦截器仅对业务方法
- * 调用进行交互,而不是在生命周期事件上。在一个未指定的事务上下文中调用生命周期方法。
- *
- * <p>带有@Transactional和事务的bean或方法中,尝试调用UserTransaction接口中
- * 的任何方法。TxType除了NOT_SUPPORTED或NEVER外,将抛出IllegalStateException
- * 异常。允许在生命周期事件中使用UserTransaction接口的方法。不管任何@Transactional注解,
- * TransactionSynchronizationRegistry都将会被使用。
- *
- * <p>事务拦截器的优先权Interceptor.Priority.PLATFORM_BEFORE+200。更多
- * 细节参看拦截器规范。
- *
- * <p>在事务上下文中,注解的元素TxType指示是否要执行bean方法。默认是TxType.REQUIRED。
- *
- * <p>默认情况下,检查异常和运行时异常的实例及其子类,不会导致事务拦截器标记的事务回滚。
- * 但是可以在异常中指定回滚。
- *
- * <p>rollbackOn元素使拦截器标记的事务进行回滚。
- *
- * <p>当一个类指定是这两种元素,指定的行为也适用于该类的子类。如果两个元素使用,
- * dontRollbackOn优先。
- * @author TCM
- * @create 2017年10月30日下午1:46:18
- * @since JTA1.2
- */
- @Inherited
- @InterceptorBinding
- @Target({ElementType.TYPE, ElementType.METHOD})
- @Retention(value = RetentionPolicy.RUNTIME)
- public @interface Transactional {
-
- /**
- * 在事务上下文中,注解的元素TxType指示是否要执行bean方法。默认是TxType.REQUIRED。
- */
- TxType value() default TxType.REQUIRED;
-
-
- public enum TxType {
- /**
- * <p>若果在事务上下之外被调用,则拦截器必须开始一个新的JTA事务。从而在事务上下文中,
- * 托管bean的方法继续被执行,事务必须完成。
- *
- * <p>若果在事务上下之内被调用,托管bean的方法被执行。
- *
- * <p>总之,事务上下文中,必须有个JTA事务。
- */
- REQUIRED,//执行方法时,必须有个事务,没有事务则创建
-
- /**
- * <p>若果在事务上下之外被调用,则拦截器必须开始一个新的JTA事务。从而在事务上下文中,
- * 托管bean的方法继续被执行,事务必须完成。
- *
- * <p>若果在事务上下之内被调用,当前事务上下文必须暂停,创建一个新的JTA事务,托管
- * bean的方法被执行完成。之前暂停的事务,重新恢复。
- */
- REQUIRES_NEW,//执行方法时,即使有事务,也要创建新的事务
-
- /**
- * <p>若果在事务上下之外被调用,TransactionalException异常嵌套一个
- * TransactionRequiredException异常被抛出。
- *
- * <p>若果在事务上下之内被调用,托管bean的方法被执行。
- */
- MANDATORY,//事务上下外不能执行该方法,否则抛出异常
-
- /**
- * <p>若果在事务上下之外被调用,托管bean的方法也会被执行。
- *
- * <p>若果在事务上下之内被调用,托管bean的方法被执行。
- */
- SUPPORTS,//事务上下内/外都可以执行该方法
-
- /**
- * <p>若果在事务上下之外被调用,托管bean的方法也会被执行。
- *
- * <p>若果在事务上下之内被调用,当前事务上下文必须暂停,托管bean的方法将在事务
- * 上下之外被执行。之前暂停的事务,重新恢复。
- */
- NOT_SUPPORTED,//事务上下文内不执行该方法
-
- /**
- * <p>若果在事务上下之外被调用,托管bean的方法也会被执行。
- * <p>若果在事务上下之内被调用,TransactionalException异常嵌套一个
- * TransactionRequiredException异常被抛出。
- */
- NEVER //事务上下文不执行该方法,否则抛出异常
- }
-
- /**
- * rollbackOn设置到指定的异常中,若是拦截器标记的事务出现该异常时,事务将回滚。
- * 相反,dontRollbackOn设置将不会出现回滚。
- * 当一个类有这些元素中的任何一个,指定的行为也适用于该类的子类。如果两个元素都有,
- * dontRollbackOn优先。
- * @return Class[] of Exceptions
- */
- @Nonbinding
- public Class[] rollbackOn() default {};
-
- @Nonbinding
- public Class[] dontRollbackOn() default {};
-
- }
- package javax.transaction;
- /**
- * 目的:事务同步,即:事务完成前后调用的方法
- *
- * <p>事务管理器支持同步机制,在事务完成的前/后,调用该接口中的方法。使用
- * javax.transaction.Transaction.registerSynchronization()
- * 方法,应用服务器可以为当前目标事务对象的事务注册一个Synchronization对象。
- * @author TCM
- * @create 2017年10月31日下午2:06:47
- */
- public interface Synchronization {
-
- //two-phase(两阶段)事务提交之前执行的方法
- public void beforeCompletion();
-
- //事务提交或回滚之后执行的方法
- public void afterCompletion(int status);
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。