<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    2009年4月11日

         摘要:   以下是本人在學習過程中做的一點點小小的總結,在這里留個副本! 現有代碼存在的問題: 為了解決每個業務模塊對應一個Servlet,Servlet過多的問題 解決辦法: 使用一個新的Servlet,匯總了所有的業務模塊Servlet,增加邏輯判斷,具體調用哪個業務Servlet public class ServletAction extends HttpServlet {...  閱讀全文
    posted @ 2009-04-11 21:48 西西里 閱讀(389) | 評論 (0)編輯 收藏

    2009年4月2日

    public class UserService {
        private UserService userService = null;

        private UserService() {}

        public static UserService getInstance() {
            if(userService == null) {
                synchronized(UserService.class) {
                    if(userService == null) {userService = new UserService();}
                }
            }
        return userService;
        }
    }
    posted @ 2009-04-02 21:46 西西里 閱讀(2344) | 評論 (12)編輯 收藏
     
     

    首先,當DAOCatchSQL異常,應該讓相應的事務回滾,并繼續拋出該異常

    conn.rollback();

    throw e;

    在方法聲明時throws這個異常;

    第二,在Service層調用到Dao層時,try catch這個異常,在catch住中把它處理為RuntimeException異常;

    處理過程是:自定義一個繼承自RuntimeException的異常類AppRuntimeException;

    catch(){

    new AppRuntimeException();

    }

    第三,在Servlet中使用配置文件web.xml注冊這個Exception,或者注冊為RuntimeException,調用Service時,如果發生這個異常,則會跳轉到相關的友好的面向用戶的錯誤頁面;

    注意:如果頁面未轉向,則可能是反射過程中拋出的其他異常截獲了我們自定義的這個RuntimeException,我們可以在這個異常中做出處理,讓它轉換為我們自定義的RuntimeException

    第四,以上我們只是簡單的處理了異常,一般正常的與業務相關的異常;

    posted @ 2009-04-02 14:01 西西里 閱讀(1377) | 評論 (3)編輯 收藏

    2009年4月1日

     

           為了解決一個事務的多個數據模型使用多個Connection的情況,首先想到的是在執行每個原子級數據模型的操作的時候直接在方法的參數中傳進來一個Connection,下一個操作也把這個同一個Connection傳進來,但是這樣帶來的問題有兩個,一是,設計問題,針對數據庫的操作DAO的方法中的參數一般都應該是針對數據庫查詢的查詢條件,把Connection放在這里作為參數顯然不合適;第二,Connection作為多個數據模型操作的共享,只在最后一個操作中才被關閉,這對于如果只有單個操作的事務執行時,Connection將不會被關閉。    
       
        為了解決這些問題,需要有一個專門生產Connection的類,供DAO層各方法調用,但是幾個方法如果是同一事務時,他們拿到的Connection應該是同一個;
        
       由此,生產Connection的類,有兩個方法,一是生產Connecton,放到一個容器中,即set方法,二是得到Conneciton,即get方法;

         當同一事務的多個方法調用時,拿到同一個容器中的Connection即可保證他們拿到的是同一個Connection對象;

         為了保證拿到的是同一個容器,使用類級別的變量,static Hashtable;

          采取static類變量的方式,解決了以上引起的設計問題?    
       
        因為static的方法是位于方法區中的,多個線程共享,所以又引發了線程不安全的問題;
        
       
        所以使用API中的ThreadLocal類型的變量,使得多個線程各自擁有自己的一個容器,從而解決了線程不安全的問題。

    posted @ 2009-04-01 15:30 西西里 閱讀(1912) | 評論 (4)編輯 收藏
    僅列出標題  
     
    主站蜘蛛池模板: 91手机看片国产永久免费| 两个人看的www免费| 91福利视频免费观看| 亚洲男人天堂2018av| 99蜜桃在线观看免费视频网站| 久久乐国产精品亚洲综合| 曰批免费视频播放免费| 亚洲国产精品一区二区第一页免| 在线视频亚洲一区| 亚洲黄片手机免费观看| 亚洲精品99久久久久中文字幕| 亚洲精品动漫免费二区| 处破痛哭A√18成年片免费| 99亚偷拍自图区亚洲| 大香人蕉免费视频75| 久久久亚洲精华液精华液精华液| 全免费a级毛片免费看不卡| 亚洲欧美日韩国产成人| 中国一级全黄的免费观看| 18以下岁毛片在免费播放| 亚洲美女自拍视频| 二级毛片免费观看全程| 国产精品V亚洲精品V日韩精品| 中文字幕在线成人免费看| 亚洲A∨无码无在线观看| 亚洲天堂免费在线视频| 狠狠综合久久综合88亚洲| 久久青草91免费观看| 亚洲欧洲精品一区二区三区| 亚洲综合无码一区二区痴汉| 日本一道一区二区免费看| 免费一级特黄特色大片| 国产成人精品日本亚洲网站| 91精品免费久久久久久久久| 亚洲国产精品无码观看久久| 国产成人综合亚洲亚洲国产第一页| 国产高清不卡免费视频| 亚洲精品偷拍无码不卡av| 精品无码国产污污污免费| 精品一区二区三区免费观看| 亚洲精品中文字幕乱码影院|