国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > Tomcat > 正文

Catalina-tomcat中處理異常的一個BUG?

2024-09-06 19:01:04
字體:
來源:轉載
供稿:網友
  • 本文來源于網頁設計愛好者web開發社區http://www.html.org.cn收集整理,歡迎訪問。
  •  bea使用的是catalina,也就是tomcat,無意中發現一個非常隱蔽的也許不算致命的bug,在jsp中某處的標簽如果執行錯誤,會在前面某處輸出緩沖區時無異常退出,而不是在真實錯誤地點發出錯誤異常。
    10:45 分:卻發現formtag執行異常退出,而且錯誤日志沒有任何輸出;所以決定轉過去先看看是什么回事。非常奇怪的是,就算在doendtag中輸入斷點后,錯誤日志仍沒有輸出。最后的檢查結果,不是程序有錯,而是在某種條件下,tag對output沒有響應,所要求輸出的vaildatorscript 只輸出了一半。

    這個tag集成了struts.validator的javascriptstatictag,不知有沒有人這樣做:我不想花時間重修把它的代碼解剖出來,也不希望讓前臺的頁面多幾個需要配置的tag;于是直接用上級的formtag向它置值,然后直接調用它的dostarttag()——其實,在 jsp容器中不也是這樣按注冊記錄調用它的方法嗎?此前偶而發現有這樣的錯誤,不過轉眼就恢復正常。既然異常消失,錯誤日志也沒有記錄,也就無法發掘它的錯誤來源了。這次重新出現,引起我的注意,而且錯誤持續時間比較長,于是可以在程序中設置斷點,跟蹤它的錯誤發生的位置。

    結果,錯誤源集中到了不是我寫的,來自于struts的validator的這個標簽。對于struts這樣的中間構件,我現在的態度是如果我不能完看懂它的代碼,可以在里面設置斷點記錄輸出到錯誤日志degbug,就不加采用,所以現在我手中的struts只是有它的構件功能,使用方式與一般所見的struts已經是完全不同了,這也包括了這個javascripstatictag。對于它的用法,我是希望它作為程序的一部分,當我選定要對某個表單的客戶端進行驗證時,它自動完成所必需的代碼輸出,而不需要我手工地設這個tag,還要匹配它的調用函數名稱。這個集成是成功的,已經運行了很長時間,經常了一定強度的測試,但平心而論,對于其中的代碼我仍是沒有深入。

    錯誤的產生后我打算向緩沖區輸出斷點,這是由于這個程序是向頁面輸出validator-rules.xml中的javascript代碼,但發現沒有成功,許多斷點沒有輸出;表明程序輸出是中斷的,但輸出過程是正常的,否則錯誤日志會記錄下來。進一步的驗證表明,程序運行以及從內存記錄中獲得的 javascript是完整的,從而排除了讀取xml發生錯誤的可能性,而且也證明java程序的運行是完全正常的,錯誤不在開發者程序,而在于平臺本身,在輸出緩沖區時無異常退出了!!!由于javascripttag中是使用stringbuffer最后tostring再輸出到緩沖區,或者,是由于這個量太大,所以溢出了??于是我把它分成逐段都輸出,但結果完全一樣。也許是由于我對于它的調用不是由容器進行,直接由parent-tag調用方法造成緩沖區分配較小??于是改成getstring方法,由parent完成輸出,可是,結果仍然是一樣的。

    最后,我打算先越過這一步,看看執行結果如何,發現該頁由于bselecttag由于調關聯的baseif接口昨晚錯刪除了一個方法出現異常,于是重新編譯后,再執行,結果發現上面的錯誤消失了。重新恢復這個錯誤,異常重新出現。這樣也就發現了它的原因。事實上,bea使用的是catlinajsp 容器,解釋一個jsp頁面時是一個統一的過程。這個異常表明,在jsp中前后的輸出文本生成是相關聯的,位于后面的程序運行錯誤,象這里,是在后面運行時出現了methodnofound(我估計,因為即使是服務器日志也沒有發現錯誤記錄),也令這個解釋執行過程中斷,造成緩沖區文本輸出一半無異常退出。

    我很少處理jsp,這是一個經驗,如果出現這種緩沖異常輸出而程序捕捉不到任何的錯誤日志時,先把這個頁面相關的程序都編譯一遍,排除這個可能再說。

    這個問題整整花了我兩個小時找原因,的確隱蔽,一些副作用是這樣就對validator.javascript的代碼熟悉了,項目后面有點時間的話,就把它修改一下,只輸出這次需要的驗證方法script:我總覺得它輸出了太多的東西,把validator_rules.xml中的所有 script方法全送出來了。
    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 顺昌县| 锡林浩特市| 寿阳县| 翼城县| 惠来县| 东兰县| 靖江市| 冷水江市| 治县。| 高清| 张家口市| 化德县| 宣汉县| 龙州县| 桃源县| 绥芬河市| 绥芬河市| 北宁市| 延津县| 上虞市| 荆州市| 江源县| 佛冈县| 万载县| 塘沽区| 洛浦县| 仁布县| 美姑县| 昌黎县| 吉木萨尔县| 治县。| 南充市| 陆良县| 大丰市| 客服| 上犹县| 聊城市| 哈尔滨市| 城步| 电白县| 永宁县|