程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 工作中遇到的錯誤記錄,工作遇到錯誤記錄

工作中遇到的錯誤記錄,工作遇到錯誤記錄

編輯:JAVA綜合教程

工作中遇到的錯誤記錄,工作遇到錯誤記錄


1 項目中程序調用發信息的接口時候,直接調用可能出現錯誤,影響主程序的流程;

  解決:(1)mq發送消息

          (2)發消息的接口自身捕獲處理異常,不能拋出到主程序中

  現在針對第二種解決方案進行實現:因為以前各個發消息的節點都是拋出異常,如果針對每個方法都加上異常處理會很麻煩,現在用spring提供的@Aspect實現; 

  使用的時候注意如下:

          <1>  <context:component-scan /> 默認不會掃描@Aspect這個注解,需要在類上面添加@Comment注解或xml裡面配置include

                            <2>  @AfterThrowing 捕捉異常後,還會繼續往上拋出

                                    @Around try catch捕捉異常後,不會繼續往上拋出
                            <3>  參考:http://blog.csdn.net/confirmaname/article/details/9728327

 

2 調用方法時出現   Transaction rolled back because it has been marked as rollback-only 異常

   代碼還原:  

       (1)

           class xx{

          method a(){

        b();

       }

            }

        (2) 配置

                  a方法屬於:<tx:method name="update*" propagation="REQUIRED" read-only="false" rollback-for="Exception" />

                  b方法屬於:<tx:method name="*" read-only="true" />

 

        出現原因:a方法調用b方法的時候,b方法出現異常,但是自己捕捉到,沒有拋出。此時b方法 事務因為配置中是默認的(REQUIRED),所以和a方法用一個事務,這時b方法出現異常會把事務進行標記,然後a方法繼續進行,結束方法之前提交事務,就會出現這個異常。

        解決方法:因為b方法是查詢方法,所以配置b方法為NOT_SUPPORTED

        參考連接:http://blog.csdn.net/launch_225/article/details/7814346 

                      http://blog.sina.com.cn/s/blog_4a40057401000865.html

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved