package javax.transaction;
import javax.transaction.xa.XAResource;
import java.lang.IllegalStateException;
import java.lang.SecurityException;
/**
* 目的:对事务对象进行事务操作
*
* <p>该接口允许在目标事务对象中对事务执行操作。创建事务对象对应于每个全局事务创建。
* 事务对象可用于资源注册、同步注册、事务完成和状态查询操作。
* @author TCM
* @create 2017年10月30日上午9:44:09
*/
public interface Transaction {
/**
* 完成事务对象中的事务
*/
public void commit() throws RollbackException,
HeuristicMixedException, HeuristicRollbackException,
SecurityException, IllegalStateException, SystemException;
/**
* 分离事务的资源
* @param xaRes 与资源相关的XAResource对象
* @param flag 值有:TMSUCCESS, TMSUSPEND, or TMFAIL.
* @return 分离成功,返回true;否则,false
*/
public boolean delistResource(XAResource xaRes, int flag)
throws IllegalStateException, SystemException;
/**
* 资源添加到事务中
* @param xaRes 与资源相关的XAResource对象
* @return 添加成功,返回true;否则,false
*/
public boolean enlistResource(XAResource xaRes)
throws RollbackException, IllegalStateException,
SystemException;
/**
* 获取事务状态
* @return Status
*/
public int getStatus() throws SystemException;
/**
* 为当前关联的事务注册一个同步对象。在two-phase(两阶段)事务提交前,事务管理器调用
* beforeCompletion()方法。事务完成之后,调用afterCompletion()方法。
*
* @param sync Synchronization对象
*/
public void registerSynchronization(Synchronization sync)
throws RollbackException, IllegalStateException,
SystemException;
/**
* 事务回滚
*/
public void rollback() throws IllegalStateException, SystemException;
/**
* 修改与目标对象相关的事务,事务的唯一可能的结果是回滚事务。
*/
public void setRollbackOnly() throws IllegalStateException,
SystemException;
}
package javax.transaction;
import java.lang.IllegalStateException;
import java.lang.SecurityException;
/**
* 接口定义应用程序显式管理事务边界的方法。
*
* UserTransaction与Transaction的区别:
* Transaction:容器管理事务
* UserTransaction:人工管理事务
* @author TCM
* @create 2017年10月31日上午9:22:38
*/
public interface UserTransaction {
/**
* 创建与当前线程相关的事务
*/
void begin() throws NotSupportedException, SystemException;
/**
* 事务提交。这个方法执行后,线程与事务没有任何关系
*/
void commit() throws RollbackException,
HeuristicMixedException, HeuristicRollbackException, SecurityException,
IllegalStateException, SystemException;
/**
* 事务回滚。这个方法执行后,线程与事务没有任何关系
*/
void rollback() throws IllegalStateException, SecurityException,
SystemException;
/**
* 修改事务。事务的唯一可能的结果是回滚事务。
*/
void setRollbackOnly() throws IllegalStateException, SystemException;
/**
* 获取事务状态
*/
int getStatus() throws SystemException;
/**
* 设置事务超时,单位秒。若超时,将回滚到当前线程的起始方法。
*
* 应用程序没有调用该方法,则有默认值。
* 若设置为0,超时为默认值。
* 为负数,则抛出SystemException。
*/
void setTransactionTimeout(int seconds) throws SystemException;
}