在应用程序中使用全局事务支持

J2EE 平台允许您使用编程式或声明式事务定界方法来管理应用程序中的事务。

编程式方法是组件管理的事务,而声明式事务定界方法是容器管理的事务。

组件管理的或 Bean 管理的事务

J2EE 应用程序使用 JTA javax.transaction.UserTransaction 接口,通过编程将事务边界限定为对受保护资源的一组更改。在 servlet 和 EJB 环境中都可以使用组件管理的事务。对于 EJB,在它的部署描述符中将事务属性设置为 TX_BEAN_MANAGED。

事务通常从 UserTransaction.begin() 调用开始。当应用程序组件准备落实更改时,它就会调用 UserTransaction.commit() 调用来协调和落实更改。如果应用程序组件必须回滚事务,则它将调用 UserTransaction.rollback() 且所有更改将被回退。例如:

    // Get User Transaction
    javax.transaction.UserTransaction transaction =
    ejbcontext.getUserTransaction();

    // Start transaction
    transaction.begin();

    // Make changes to the protected resources.
    // For example, use the J2EE/CA's CCI Interaction interface
    // to submit changes to an EIS system(s)
    interaction.execute(interactionSpec, input, output);

    if (/* decide to commit */) {
    // commit the transaction
    transaction.commit();

    } else { /* decide to roll back */
    // rollback the transaction
    transaction.rollback();
    }

容器管理的事务

只有在 EJB 环境中才能使用容器管理的事务。EJB 通过部署描述符中的事务属性(例如,TX_REQUIRED)来以声明方式指定容器管理的事务。容器管理的事务由 EJB 容器来管理。容器将代表 EJB 组件来调用适当的方法,例如,begin、commit 或 rollback。这种声明式方法简化了 EJB 中的编程调用。

相关阅读资料:有关 J2EE 体系结构和 JTA 规范的更多信息,请参阅 http://java.sun.com/j2ee/docs.html

相关概念
全局事务支持与两阶段落实
两阶段落实先决条件
相关参考
两阶段落实环境注意事项

反馈