honzeland

          記錄點滴。。。

          常用鏈接

          統計

          Famous Websites

          Java

          Linux

          P2P

          最新評論

          GWT/Tomcat will re-call servlet.

           昨天遇到個非常奇怪的bug:更新了一下后臺的代碼,結果每次點擊頁面都會導致servlet方法調用兩次,從而頁面報錯(邏輯上不讓調兩次 ),我們的前臺采用gwt,servlet engine采用tomcat,debug的時候,斷點放在servlet所調用的method上,結果invoke兩次,由此斷定,前臺代碼的問題(有點武斷哦),然后負責前臺的同事debugging前臺的代碼,噼里啪啦半天。。。,說是前臺好像沒有調兩次(之所以用好像,是debugging時部分代碼走兩次,部分走一次),而我當時的想法是,后臺怎么操作,也不至于讓servlet調用兩次吧,所以我個人就認定是前臺邏輯導致重復rpc調用(gwt),但是這個bug在這兩天才出現的,從svn的歷史記錄來看,前臺代碼在這兩天基本沒什么改變,同事只好從svn上一個version接一個version的check,最后確定出兩個相鄰的versions,前一個能用,后一個出bug,這時我隱約感覺到是后臺的問題,但是還是想不明白,后臺的邏輯怎么就能讓前臺重復調用,非常不解,沒辦法,在同事的建議下,在servlet的那個method上加上一條debug信息,做了兩次試驗,一次是完整的代碼,一次是把method中調用后臺的接口注釋掉,結果從日志上看出,前一次試驗debug信息打印了兩次,后一次試驗debug只打印了一次,此時,確定是后臺邏輯影響了前臺的調用(此時,覺得走彎路了,為什么不早點做這個試驗,其實確定是前臺還是后臺的問題,只需要做這樣一個簡單的試驗。。。)。接下來,我思考的就是到底是什么在作怪呢,對比svn上的兩個版本,只有兩處可能的改動,一處是將return改成throw exception, 一處是調用了Thread.currentThread.interrupt(),我一個感覺是后者,注掉這句后,一切OK,呵呵,慶幸沒有先嘗試前者,要不改動很大,。。。

          剛剛看了gwt的源碼,還沒找到問題的根源,我的觀點是,thread接收到interrupt信號時,會重復發送rpc調用,(呵呵,還沒確定)。。。

          posted on 2008-12-04 10:26 honzeland 閱讀(1215) 評論(0)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 开平市| 西峡县| 勃利县| 景宁| 玉龙| 平阳县| 万全县| 江达县| 长阳| 嘉黎县| 日喀则市| 洛南县| 桂东县| 筠连县| 贵德县| 夏邑县| 衡水市| 马边| 郓城县| 故城县| 聊城市| 深州市| 镇远县| 五大连池市| 岳阳县| 汶上县| 兰州市| 芮城县| 江门市| 房产| 通化市| 蕉岭县| 兰州市| 离岛区| 柳河县| 二连浩特市| 通化市| 黎城县| 长宁区| 德兴市| 南康市|