我在QA中對JBoss 4.2上的這種討厭的行爲感到懊惱,並且在我們投入生產並找到其他一些角落案例之前,我想將它扼殺在萌芽狀態。如何強制在JBoss 4.2中重新編譯jsps?
一個jsp卡列斯其具有以下特徵的方法:
public void methodName(String arg)
這變爲:
methodName("param");
:
public void methodName(String arg, Object... args)
A-預先存在的JSP通過調用此方法
在部署修改後的代碼時,JBoss沒有重新編譯JSP,導致QA崩潰。給jsp添加一個愚蠢的評論解決了這個問題(JBoss認識到JSP改變並重新編譯了它)。
在JBoss上有一個強制重新編譯JSP的設置嗎?
編輯:爲了澄清答案中的一些觀點,設置是JSP是屬於耳朵的一部分的戰爭的一部分。耳朵裏有所有的類,放在一個罐子裏。
關於預編譯的願望,如果系統不認爲jsp需要編譯,會不會預編譯強制重編譯?它似乎並不如此。這裏的錯誤不是一個compliation錯誤,它是一個方法調用錯誤,因爲「已更改」(在字節碼級別,而不是在代碼級別)方法簽名。
附錄:請注意,儘管JSP確實發生了更改,但即使使用接受的答案標誌集,JSP也不會重新編譯,但我們最近在生產中經歷過。那裏存在主要的bug,但是無論如何,JBoss正常關閉。此時它將成爲舊版本的JBoss,但如果您仍在使用它,刪除工作內容和tmp目錄是唯一可行的方法。
我並沒有改變接受的答案,僅僅是因爲它真的到了問題所在的地步。 JBoss的錯誤是一個單獨的問題。
謝謝,但在生產部署期間實際上很難做到這一點。 – Yishai 2009-06-04 21:46:44