5.2. 使用 TransactionManager 对象
使用 javax.transaction.TransactionManager
对象的最常见方法是将它传递给框架 API,例如,传递给 Camel JMS 组件。这可让框架在您事务处理后进行查找。有时,您可能想要直接使用 TransactionManager
对象。当您需要访问高级事务 API,如 suspend ()
和 resume ()
方法时,这非常有用。
5.2.1. TransactionManager 接口的定义
JTA TransactionManager 接口有以下定义:
interface javax.transaction.TransactionManager { // Same as UserTransaction methods public void begin(); public void commit(); public void rollback(); public void setRollbackOnly(); public int getStatus(); public void setTransactionTimeout(int seconds); // Extra TransactionManager methods public Transaction getTransaction(); public Transaction suspend() ; public void resume(Transaction tobj); }
5.2.2. TransactionManager 方法的描述
TransactionManager
接口支持 UserTransaction
接口中找到的所有方法。您可以使用 TransactionManager
对象进行事务处理。另外,TransactionManager
对象支持以下方法:
- getTransaction()
-
获取对当前事务的引用,这是与当前线程关联的事务。如果没有当前的事务,此方法会返回
null
。 - suspend()
将当前事务从当前线程中分离,并返回对事务的引用。调用此方法后,当前线程不再有事务上下文。您在此时之后执行的所有工作都不再在事务环境中完成。
注意并非所有事务管理器都支持挂起事务。但是,Narayana 支持此功能。
- resume()
- 将暂停的事务重新附加到当前线程上下文。调用此方法后,事务上下文会被恢复,并在此时在事务环境中完成的所有工作。