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)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 安化县| 呼伦贝尔市| 隆回县| 隆安县| 汉中市| 夏河县| 竹山县| 清镇市| 灌阳县| 舞钢市| 南宁市| 浏阳市| 东至县| 积石山| 贵州省| 襄城县| 巩留县| 麻城市| 桐乡市| 毕节市| 秦皇岛市| 镇雄县| 峨边| 余江县| 安龙县| 怀安县| 庄河市| 金寨县| 华宁县| 若羌县| 伊宁县| 崇文区| 阳高县| 林西县| 左权县| 石河子市| 马公市| 中宁县| 玛纳斯县| 东海县| 嫩江县|