仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 567|回复: 8
打印 上一主题 下一主题

[学习教程] 发布一篇oc4j+toplink+spring利用jta内部事件的一点心得

[复制链接]
愤怒的大鸟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:07:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
对于一个大型项目,如果用java来作,可能需要9个月,并且可能需要翻阅10本以上的书,但如果用ruby来作,3个月,3本书就足够了,而.net也不过3,4本书足以,这就是区别。
早晨要上班的时分,applicationteam那边利用TibcoEMS做动静集成服务时分出了bug,毛病是:java.sql.SQLException:当全局事件处置处于举动形态时,没法挪用办法commit,应当是在全局事件中利用了当地事件并提交了。协助看了一下,它的oc4j,toplink,spring的利用上都存在着一些成绩,并把要注重的中央总结了一下。
Jta内部事件,也称为散布式事件,全局事件。
oc4j:
·让transactionmanager晓得resource的存在
要利用内部事件,起首要让transactionmanager懂得是哪一个resource。我们选择利用managedresource,如许由容器来办理:datasource,jmsresouce,jcaresource,oc4j的transactionmanager一定是晓得这些managedresource的存在的,能够经由过程ra,data-sources.xml来设置,大概间接经由过程oc4jwebconsole来创立。
Oc4jdata-sources.xml
出格要注重的是datasource的设置,oc4j中能够经由过程data-sources.xml设置transactionlevel,默认是global,暗示joinjta内部事件,假如是local,oc4j就会把一切的manageddatasource的操纵看成localconnection来对待,这些操纵是不join到内部事件中的。
甚么是一次localtransaction操纵呢?
Toplink:每次对unitofwork的提交。
Connection的每次提交,autocommit的每次操纵。
  <managed-data-sourcename="MIFSystemLogDataSource"
     connection-pool-name="MIFSysLogConnectionFactory"
     jndi-name="jdbc/mifStatusLog" tx-level=global/>
有人会问没有利用xa的connection怎样能利用内部事件jointransaction呢,oracle完成了称为EmulatingXA(oc4jcontainer),它基础上摹拟了twophasecommit的功效,可是没有transactionbranches,也就是xid的branch标识符,xid包含format标识符,global事件标识符和branch标识符。也没有twophasecommit的预提交历程。Toplink在利用sessionbroker时,也有相似的设置,称为twostagecommit。xa的resource应当设置成global的transaction,不然没需要用xa。
Oc4j中怎样本人把持transaction
偶然我们大概必要本人把持transaction,如许我们大概必要在oc4j中取得受管的UserTransaction和TransactionManager,TransactionManager能够suspend和resume一个transaction,完成诸如requiresnew如许的功效。
   ContextinitialContext=newInitialContext();
   UserTransactionuserTrx=(javax.transaction.UserTransaction)initialContext.lookup("java:comp/UserTransaction");
      if(utinstanceofTransactionManager){
            TransactionManagertm=(TransactionManager)userTrx;
}
假如利用的是散布式全局transaction不倡议在程序中挪用connection.setAutoCommit(true),connection.commit(),commit.rollback()办法,如许会搅扰散布式事件的办理。
<p>
但是对于JAVA技术类的学习,我觉得大课堂反而会影响自身独立思考的过程,因为上课的时候,老师讲课的速度很快为了不遗漏要点,通常会仔细的听,
沙发
发表于 2015-1-20 14:52:44 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
不帅 该用户已被删除
板凳
发表于 2015-1-29 11:05:16 来自手机 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
深爱那片海 该用户已被删除
地板
发表于 2015-2-6 00:27:46 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
若相依 该用户已被删除
5#
发表于 2015-2-14 15:53:14 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
谁可相欹 该用户已被删除
6#
发表于 2015-3-4 07:44:04 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
小妖女 该用户已被删除
7#
发表于 2015-3-11 17:58:38 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
柔情似水 该用户已被删除
8#
发表于 2015-3-19 05:29:59 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
爱飞 该用户已被删除
9#
发表于 2015-3-27 08:11:56 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 16:29

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表