cuiyi's blog(崔毅 crazycy)

          記錄點滴 鑒往事之得失 以資于發展
          數據加載中……

          Transaction續四

          spring和ejb事務的一個trap是:

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

          同“transaction續三”類似的一個陷阱,如果事務的方法內部調用的方法是在同一個類里,那么并沒有事務起作用。

          <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是被同一個類事務攔截的方法調用,那么這個調用邏輯是:同一個事務中的兩個方法的,這樣是不會起另一個事務的(可查看spring的源代碼)

          解決辦法就是把它放到另一個對象里,讓這個對象的代理被攔截,從而達到預期目的


          以前一直有這個理論,但是實踐中卻犯了這個錯誤,害的我浪費了5個小時,真該打。

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

          主站蜘蛛池模板: 盘锦市| 玉林市| 赞皇县| 南郑县| 兴文县| 绥宁县| 油尖旺区| 丁青县| 汉沽区| 龙海市| 开鲁县| 修水县| 洞口县| 东源县| 永寿县| 南郑县| 广西| 泗洪县| 洞头县| 霍州市| 姜堰市| 怀安县| 陆良县| 石首市| 桂阳县| 乌海市| 自贡市| 海城市| 城固县| 沾化县| 磴口县| 田林县| 民和| 遂平县| 西城区| 平原县| 宁乡县| 姚安县| 大厂| 酉阳| 右玉县|