鎵嬪伐璋冪敤jdbc鐨刢onnection浜嬪姟鏂規硶鍜屼嬌鐢↗TA鎺ュ彛閮藉睘浜庣紪紼嬪紡寮鍙戯紝鍦‥JB涓彨BMT(Bean綆$悊浜嬪姟)銆?br /> JTA鏈閲嶈鐨勬帴鍙e氨鏄疷serTransaction鍜屽畠鐨勫叚涓柟娉?begin錛宑ommit錛宺ollback錛実etStatus錛宻etRollbackonly錛宻etTransactionTimeout銆?br /> 紼嬪簭闇瑕乁serTransaction鏃跺彲浠ヤ粠JNDI棰嗗彇錛屼笉榪嘕NDI鍚嶉殢搴旂敤鏈嶅姟鍣ㄤ笉鍚岃屼笉鍚屻侲JB3閲屽彲浠ョ洿鎺ョ敤涓狜Resource娉ㄥ叆銆?/p>
鍓嶉潰閮芥槸閾哄灚錛岃繖涓墠鏄富鎵撶殑浜嬪姟妯″瀷錛屽EJB鐨凜MT(瀹瑰櫒綆$悊浜嬪姟)鍜孲prin銆?/p>
鍏朵腑EJB2.0錛孲pring1.0鍦ㄩ儴緗叉弿榪扮鍜宎pplicationContext.xml涓畾涔夛紝鑰孍JB3.0鍜孲pring2.0鍒欓噰鐢╝nnotation銆?/p>
榪欓噷JavaEE涓嶴pring鐨勫畾涔夊熀鏈浉鍚岋細
鍙錛孯equired鏄粯璁ょ殑璁劇疆錛孲upports鏄彧璇繪柟娉曠殑鏈浣抽夋嫨銆?/p>
綰у埆瓚婁綆瓚婂畨鍏ㄦ晥鐜囦篃瓚婁綆銆傞殧紱葷駭鍒渶瑕佺浉鍏寵祫婧愭敮鎸侊紝濡傞噸澶嶈鍦∣racle閲屼細闄嶇駭涓篟eadCommited銆係pring閲岄粯璁ょ殑Default綰у埆瀹屽叏鐪嬫暟鎹簮鐨勮劯鑹茶浜嬨?/p>
EJB閲岋紝鎯硆ollback鍙兘sessionContext.setRollbackOnly()錛屾垨鑰呮姏鍑篍JBException銆?EJB3榪樺彲浠nnotation璁劇疆鏌愪簺鑷畾涔塃xception鍙互瑙﹀彂rollback)
鍦⊿pring閲岋紝鍚屾牱鍙細rollback unchecked exception(RuntimeExcption鍙婂瓙綾?錛岃宑hecked exception(Exception鍙婂瓙綾?鏄笉浼歳ollback鐨勶紝闄ら潪浣犵壒鍒0鏄庛?/p>
@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW,rollbackFor = {MyException1.class,MyException2.class})
鍥犳鎵鏈夊湪service灞傛柟娉曚腑鐢╰hrows瀹氫箟鐨凟xception錛岄兘蹇呴』鍦ㄤ簨鍔″畾涔変腑榪涜rollback璁懼畾銆?璇峰嬁鍠勫繕)
鎵鏈夊湪service灞傛柟娉曚腑c琚玜tch澶勭悊浜嗙殑寮傚父錛屽張甯屾湜瀹瑰櫒杈呭姪rollback鐨勮瘽錛屽繀欏婚噸鎶涗竴涓瀹氫箟鐨凴untimeException鐨勫瓙綾匯?璇峰嬁鍥炴湜)
Spring涓嶅笇鏈涚紪紼嬪紡浜嬪姟綆$悊銆?br /> Spring涔熶笉甯屾湜浣跨敤EJB CMT--CMT渚濊禆浜嶦JB鑰屾棤娉曠敤浜嶱OJO錛屼緷璧栦簬JTA鍏ㄥ眬浜嬪姟瀵瑰崟鏁版嵁婧愬満鏅犳垚浜嗘氮璐癸紝鑰屼笖rollback鏈哄埗姣旇緝楹葷儲錛堝繀欏諱負EJBException鎴栨墜宸etRollbackOnly())銆?br /> 鍥犳Spring閫氳繃AOP瀹炵幇浜嗗POJO鐨勬暣濂楀鍛婂紡浜嬪姟浣撶郴錛涘jdbc,hibernate,jpa,jms絳塴ocal鏁版嵁婧愬拰JTA瀹炵幇浜嗙粺涓鐨勪簨鍔$鐞嗘満鍒訛紝鑰屼笖鏀寔鏈湴璧勬簮涓嶫TA鍦ㄩ厤緗枃浠剁駭鐨勫垏鎹紝鑰屼笖鏀硅繘浜唕ollback鏈哄埗銆?/p>
1錛変竴涓湰鍦頒簨鍔$鐞嗗櫒錛?/p>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory" /> </bean>
2錛塖pring灝變細鎶婅姹傞兘杞彂鍒板簲鐢ㄦ湇鍔″櫒鐨凧TA瀵硅薄涓婏紙娉ㄦ剰姝ゆ椂鏁版嵁婧愪篃闇瑕佹敼涓虹敤JNDI浠庡簲鐢ㄦ湇鍔″櫒鑾峰彇)銆?/p>
<bean id="myTxManager" class="org.springframework.transaction.jta.JtaTransactionManager"/>
3錛夊簲鐢ㄦ湇鍔″櫒涓撴湁鐨勭被鍨嬬殑JTA浜嬪姟綆$悊鍣細
<bean id="myTxManager" class="org.springframework.transaction.jta.WebLogicJtaTransactionManager"/>