2011-03-23 55 views
0

可以請任何人分享他對這個主題的經驗嗎?JVM的由Spring加載的類的熱插拔,使用JPDA

當使用Tomcat上JPDA,並重新加載類的工作即使通過彈簧加載的類?假設我有幾個加載和實例化的類的春天上下文,我想在其中之一改變一個方法。

一般情況下,該類被更換,重新加載和所有其他實例從類新版本的實例。我想即使舊的實例被替換爲舊的實例?

使用Spring時這也起作用嗎?所以我有一個mvc控制器,我改變它的方法?

還是我必須使用JRebel的這一要求。

回答

0

我這方面的經驗是,它運作良好,可靠,只要你不當然改變方法簽名,添加包含的字段等改變任何Spring容器類的任何現有方法的實現(MVC控制器)應該完全按預期工作。作爲參考,上次我測試的是Tomcat 6,Spring 3,並且使用Netbeans 6.9的「Apply Code Changes」通過遠程附加調試器,但是它是Java標準,所以我懷疑IDE會對它產生多大影響。

編輯:上述擔憂JRebel的(我從來沒有使用過)無。

+0

好吧,我從來沒有去過這個熱插拔的風扇,因爲大多是我在做超出允許「熱插拔」範圍變化。我從來不需要改變方法的內容並檢查結果。寫東西時通常會創建另一種方法。然而,考慮到spring context和依賴注入是如何工作的,我不知道hotswapping對於這些類是如何工作的......也許它都在JVM的底層,對Spring來說是不可見的......保留類簽名和對象引用等。 – lisak 2011-03-24 00:08:25

+0

@lisak我可能在這方面是錯誤的,但我相信它實際上不需要像你說的那樣重新實例化任何類。該方法的實現位於特定的內存地址,並且它不會更新指向該內存地址的鏈接以指向不同的位置。因此它非常快速和可靠,而且Spring或任何其他庫的使用都不成問題。 – Melv 2011-03-24 01:15:14

+0

你可能是對的,我受JRebel的影響,它處理更多... – lisak 2011-03-24 01:38:59