cuiyi's blog(崔毅 crazycy)

          記錄點(diǎn)滴 鑒往事之得失 以資于發(fā)展
          數(shù)據(jù)加載中……

          Transaction續(xù)四

          spring和ejb事務(wù)的一個(gè)trap是:

          事務(wù)是加載在方法上,要事務(wù)起作用,首先事務(wù)所在的類的代理要被攔截,其次是方法要被攔截。

          同“transaction續(xù)三”類似的一個(gè)陷阱,如果事務(wù)的方法內(nèi)部調(diào)用的方法是在同一個(gè)類里,那么并沒有事務(wù)起作用。

          <bean id="txAttributes"
                  
          class="org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource">
                  
          <property name="properties">
                      
          <props>
                          
          <prop key="backupXmlToDb">PROPAGATION_NOT_SUPPORTED</prop>
                          
          <prop key="*">PROPAGATION_REQUIRED</prop>
                      
          </props>
                  
          </property>
              
          </bean>

           

          同樣“PROPAGATION_NOT_SUPPORTED”雖然配置給了backupXmlToDb,但是如果backupXmlToDb是被同一個(gè)類事務(wù)攔截的方法調(diào)用,那么這個(gè)調(diào)用邏輯是:同一個(gè)事務(wù)中的兩個(gè)方法的,這樣是不會(huì)起另一個(gè)事務(wù)的(可查看spring的源代碼)

          解決辦法就是把它放到另一個(gè)對(duì)象里,讓這個(gè)對(duì)象的代理被攔截,從而達(dá)到預(yù)期目的


          以前一直有這個(gè)理論,但是實(shí)踐中卻犯了這個(gè)錯(cuò)誤,害的我浪費(fèi)了5個(gè)小時(shí),真該打。

          posted on 2010-09-07 10:37 crazycy 閱讀(247) 評(píng)論(0)  編輯  收藏 所屬分類: JavaEE技術(shù)

          主站蜘蛛池模板: 临邑县| 玉门市| 湄潭县| 富民县| 新余市| 赤城县| 云霄县| 北流市| 九龙坡区| 图木舒克市| 乐昌市| 武隆县| 剑川县| 天等县| 镶黄旗| 四子王旗| 鄂托克前旗| 托克逊县| 武陟县| 垣曲县| 呈贡县| 靖江市| 太原市| 乌鲁木齐县| 会东县| 长治县| 太仆寺旗| 梧州市| 桃园县| 牡丹江市| 玉树县| 霍林郭勒市| 徐闻县| 定边县| 任丘市| 运城市| 交口县| 七台河市| 阜南县| 宿迁市| 方正县|