FTPC 事务组使用

34 篇文章 20 订阅

        Plant Operations允许使用UserTransaction对象将多个原子事务作为单个组的一部分执行。 分组的事务将包含各个事务的所有特征。 使用以下方法执行分组事务:

  • UserTransaction.begin()
  • UserTransaction.commit()
  • UserTransaction.rollback()

        使用UserTransaction.commit()方法时,begin()和commit()之间完成的所有单个事务将作为一个事务保存到数据库中。 如果无法保存一个分组事务,则不会保存任何单个事务。

        使用UserTransaction.rollback()方法时,begin()和rollback()之间完成的所有单个事务将作为一个事务回滚。

        使用UserTransaction.setTransactionTimeout(interval)方法设置事务分组超时。 间隔以秒为单位。 必须在调用transaction.begin()方法之前设置事务分组超时。 如果在调用transaction.begin()方法之前未设置它,则setTransactionTimeout(interval)方法无法生效。

        //创建UserTransaction对象

        response = getUserTransaction()

        objTrx = response.getResult()

        //设置事务超时,单位秒

        objTrx.setTransactionTimeout(3000)

        //开始然后保存交易

        objTrx.begin()

        ...

        LotA.save()

        LotB.save()

        Unit.close("reason")

        ...

        objTrx.commit()

        您可以组合在一起的交易数量没有限制。 此功能记录组中每个成员的实际事务时间,这与分组的事务时间不同。

嵌套事务组

        可以选择使用Function.getUserTransaction(boolean allowNesting)方法启用嵌套。 例如,Function1调用Function2,然后调用Function3。 当Function2调用UserTransaction.begin()时,会发生以下情况,具体取决于您的allowNesting配置:

  • 如果allowNesting设置为false,则UserTransaction.begin()调用将失败,因为Function1已经调用了UserTransaction.begin()。
  • 如果allowNesting设置为true,则每次调用嵌套函数时,beginCount值都会递增。 因此,当Function1调用UserTransaction.begin()方法时,该值增加到1,然后当Function2调用UserTransaction.begin()方法时,该值增加到2。

如果allownest设置为true,还会发生以下行为:

  • 调用UserTransaction.commit()方法时,会为每个嵌套函数递减beginCount值,直到beginCount值为0.然后提交事务。
  • 调用UserTransaction.rollback()方法时,会为每个嵌套函数递减beginCount值,直到beginCount值为0.然后回滚事务。 一旦在嵌套函数上调用UserTransaction.rollback()方法,尝试在任何其他嵌套函数上执行任何其他事务将返回错误。 只能在其他嵌套函数上调用UserTransaction.rollback()方法。

        调用UserTransaction.getBeginCount()方法以返回当前启动的嵌套函数的数量。

事务组支持

        以下支持事务分组:

  • WebSphere (clustering and non-clustering environment)

  • JBoss Advanced (clustering and non-clustering environment)

  • JBoss Stand-Alone

  • a Java Web Services client when using RMI

  • all supported security providers

        使用.NET代理工厂或使用SOAP协议的任何客户端时,不支持此功能。 事务分组不支持子事务(即嵌套事务)。

        FTPC不会在数据库中创建事务分组的记录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

为何生存

知识共享,共同进步!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值