自己啟動jetty所遇到的 session reset 問題

          在eclipse 當中啟動的 jetty 時,由于要根據 extension point 來找到
          相應的 servlet 定義和 mapping,因此自己取得一個 context,然后往里面
          addHandler。開始只有一個 servlet ,沒有問題,后來又有兩個plugin,其中
          也有servlet/mapping的定義,然后就總是出現 session reset 的問題。

          開始還以為是自己做的classloader 的問題,因為擔心自己做的 loader 會產生
          不好的影響。后來把日志級別調高之后,發現如果連續只訪問一個servlet, 就不會
          有 session reset 問題,如果這時候再訪問另一個 servlet,它就會賦予另外一個
          session id。再仔細看了一下增加 servlet mapping 的代碼:
          for (ExtensionBean bean : servletMappingBeans) {
            ServletHandler handler = new ServletHandler();
            handler.addServlet( bean.getProperty( "mapping"), bean.getClassName());
            context.addHandler( handler);
          }


          這樣,相當于在 context 里面增加了多個 servlet handler,每個handler有一個自己的
          session manager,由此導致訪問不同的 servlet,使用不同的session id 的問題,從而
          導致客戶端認為 session reset 了。因此,稍微修改一下就解決了這個問題:

          ServletHandler handler = new ServletHandler();
          for (ExtensionBean bean : servletMappingBeans) {
            handler.addServlet( bean.getProperty( "mapping"), bean.getClassName());
          }
          context.addHandler( handler);


          教訓:一開始就覺得這個問題不是個大問題,但是由于在后臺老是沒有異常,日志文件中也
          沒有提供足夠的信息,因此一開始花了很長時間進行調試和單步跟蹤(雖然不喜歡,但是當時
          也沒有想出其他辦法)。后來把日志級別提高了,把jetty的debug enable之后,發現訪問
          不同的servlet將造成session id 的變化,從而很快的定位到問題并且解決問題。

          也就是說,碰到問題,還是應該冷靜,盡量用日志去定位問題,而不是用debug去定位問題。

          主站: http://blogsite.3322.org/jspwiki/
          posted on 2005-11-29 15:53 SimonLei 閱讀(1521) 評論(2)  編輯  收藏
          評論
          • # re: 自己啟動jetty所遇到的 session reset 問題
            cowrie
            Posted @ 2006-05-31 14:59

            請問,如何處理JETTY 編譯JSP后,session_id變化的問題?  回復  更多評論   
          • # re: 自己啟動jetty所遇到的 session reset 問題
            SimonLei
            Posted @ 2006-05-31 15:08
            sorry, 這個問題沒碰到過。
              回復  更多評論   

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          統計

          主站蜘蛛池模板: 建宁县| 新丰县| 闸北区| 大冶市| 德兴市| 津南区| 孟州市| 昭苏县| 迭部县| 泰州市| 高碑店市| 新巴尔虎右旗| 五常市| 山东省| 绥阳县| 安塞县| 邢台市| 五台县| 临城县| 曲松县| 柏乡县| 安塞县| 岱山县| 昔阳县| 马龙县| 昆明市| 太湖县| 南投县| 达日县| 宜黄县| 扎囊县| 卓尼县| 金山区| 汝州市| 达孜县| 什邡市| 蒙阴县| 福泉市| 阿合奇县| 玉林市| 阿鲁科尔沁旗|