Ofbiz框架中的事务解析.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Ofbiz框架中的事务解析

大家都知道Java中的事务分为本地事务和全局事务,何为本地事务,因为Java本身通过JDBC进行数据库操作是没有事务的,也就是自动进行提交。而本地事务就是在connection连接里面设置了setAutoCommit(false),手工打开JDBC事务,然后在该connection上所做的所有操作都能保证ACID属性;而对于Java的全局事务,说穿了就是采用JTA (Java Transacion API)的事务,该事务不依赖于具体的连接(因为它甚至可以是JMS资源),如果全局事务中包含了多个资源,那么它采用的就是所谓的“两阶段提交”规则,从而也保证了事务的ACID属性。?前面是对Java中的事务进行了一个概括性的总结?而对于我们最熟悉的ofbiz框架中的几个事务性问题应该如何解答:1、? ofbiz框架中的服务可以通过配置文件进行启用和关闭事务,那么ofbiz服务中如果不开启事务,只要我们在调用服务前用TransactinUtil.begin()显式的打开事务,那么一样可以保证事务的一致性,关于这一点通过查看调用服务的ofbiz原码即可得到,这样不在赘述。2、? ofbiz框架中如果调用两次连接更新不同的对象,那么通过在调用前启用TransactionUtil.begin();是不是能够保证事务的一致性呢?3、? Ofbiz框架中如果在一个TransactionUtil.begin()事务中,既更新了一个数据连接的表,同时通过取得另外的数据连接执行了存储过程的调用,那么这两者能否保持同步?4、? 如果在一个TransactionUtil.begin()事务中,连接了两个不同的数据源,更新第二个数据源时发生异常,能否保证数据的一致性??通过查看TransactionUtil.begin()代码跟踪下去,看了一下Tyrex组件对于全局性事务的解析,我们预计:由于Tyrex组件在commit()如果检测到多个资源,而这多个资源都满足XA协议,那么它会采用“两阶段提交”方式,故我们预期上面几个情况均能保证事务的一致性。?通过几个简单的实验证明,上述预期是完全正确的。核心代码如下:publicstatic String CustomerGatherMethodCreate(HttpServletRequest request,HttpServletResponse response) {?boolean isSave = false;List toBeStore = new ArrayList();boolean beganTrans = true;GenericDelegator delegator = (GenericDelegator) request.getAttribute(delegator);try {if (beganTrans)beganTrans = TransactionUtil.begin();List tempList = delegator.findByAnd(RelationshipAttribute, UtilMisc.toMap(roleTypeIdFrom, DISTRIBUTOR,roleTypeIdTo, MANUFACTURER,partyIdFrom, DKHTV.DRFGL, partyIdTo,01, attrName,GATHER_FEATURE));GenericValue gv = null;Iterator iter=tempList.iterator();if(iter.hasNext())gv = (GenericValue)iter.next();gv.set(attrValue, NOGATHER);toBeStore.add(gv);delegator.storeAll(toBeStore);//isSave = saveCustomerGatherMethod(abc,//3, delegator);testTulipTransaction();TransactionUmit(beganTrans);request.setAttribute(SiteDefs.EVENT_MESSAGE, 成功更改客户采集方式!);returnsuccess;} catch (Exception e) {e.printStackTrace();Debug.logError(e);try {TransactionUtil.rollback(beganTrans);} catch (GenericTransactionException e1) {e1.printStackTrace();}request.setAttribute(SiteDefs.ERROR_MESSAGE,e.getM

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档