honzeland

          記錄點(diǎn)滴。。。

          常用鏈接

          統(tǒng)計(jì)

          Famous Websites

          Java

          Linux

          P2P

          最新評(píng)論

          GWT/Tomcat will re-call servlet.

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

          剛剛看了gwt的源碼,還沒(méi)找到問(wèn)題的根源,我的觀點(diǎn)是,thread接收到interrupt信號(hào)時(shí),會(huì)重復(fù)發(fā)送rpc調(diào)用,(呵呵,還沒(méi)確定)。。。

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


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 定边县| 梅州市| 建宁县| 岳池县| 泰来县| 斗六市| 罗甸县| 烟台市| 青海省| 徐闻县| 安平县| 汨罗市| 广汉市| 牙克石市| 东平县| 墨竹工卡县| 阳谷县| 双峰县| 偃师市| 仙桃市| 永州市| 齐河县| 海林市| 昌黎县| 中宁县| 仙桃市| 吉林省| 齐河县| 黄山市| 门头沟区| 潼关县| 洛阳市| 邮箱| 望城县| 朝阳市| 广南县| 曲沃县| 科尔| 富锦市| 泗阳县| 安多县|