仓酷云

标题: 发布一篇oc4j+toplink+spring利用jta内部事件的一点心得 [打印本页]

作者: 愤怒的大鸟    时间: 2015-1-18 11:07
标题: 发布一篇oc4j+toplink+spring利用jta内部事件的一点心得
对于一个大型项目,如果用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
是一种将安全性(Security)列为第一优先考虑的语言
作者: 不帅    时间: 2015-1-29 11:05
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者: 深爱那片海    时间: 2015-2-6 00:27
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
作者: 若相依    时间: 2015-2-14 15:53
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者: 谁可相欹    时间: 2015-3-4 07:44
Java是一种计算机编程语言,拥有跨平台、面向对java
作者: 小妖女    时间: 2015-3-11 17:58
Java 编程语言的风格十分接近C、C++语言。
作者: 柔情似水    时间: 2015-3-19 05:29
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者: 爱飞    时间: 2015-3-27 08:11
是一种将安全性(Security)列为第一优先考虑的语言




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2