2010-03-05 103 views
0

我想重新加載只是我的web圖層類而不重新加載我的服務層類(這需要更長的時間來初始化和更低頻率更改)。沒有從我的服務層到Web層的引用,我可以毫無問題地創建一個全新的Web層實例。如何在不重新啓動我的Web應用程序的情況下重新加載servlet類?

我可以想象一個解決方案,涉及複雜的類加載器技巧來隔離它自己的類加載器中的Web層,我認爲這可能是唯一的方法來做到這一點,所以我問的是,有沒有圖書館在那裏這是什麼?

我知道JavaRebel - 我不需要那麼多的力量,我真的在尋找更輕量級的免費解決方案。

+1

爲什麼?我沒有看到任何真實世界的好處。也許只在調試/開發期間。 – BalusC 2010-03-05 13:17:35

+0

是的,這是我所需要的 - 開發不用於生產。 – Ramon 2010-03-05 14:33:13

回答

3

如果您的web圖層與服務圖層分離,您是否可以將它們部署爲單獨的應用程序?然後,Web應用程序可以根據需要隨時重新加載。

如果重新加載webapp的原因是配置發生變化,那麼將屬性等從WEB-INF文件夾移開(因爲它們通常不會被重新加載/重新加載)。處理可重新加載的配置等的想法可以發現在春季和FreeMarker

+0

如果web層在不同的應用程序中,它們將如何引用服務層對象? – Ramon 2010-03-05 14:31:47

+0

那麼,如果它們是真正分離的,那麼你可以在同一個應用程序中使用套接字,webservices,REST ...而不是直接引用。 – Kennet 2010-03-05 15:43:03

0

不知道這會解決您的問題,但是如果您可以輕鬆實例化web層的整個實例,也許可以創建一個名爲reloadWebLayer()的方法。然後添加一個按鈕到一個管理頁面,點擊時調用reoladWebLayer()?

如果您需要它自動重新加載,您可以設置一個計時器並每隔x秒調用一次reloadWebLayer(),或者可以編寫一個文件監聽器,在類路徑上的文件發生更改時運行reloadWebLayer()。

+0

雖然這不會重新加載類,這是我真正想要的。 – Ramon 2010-03-05 14:32:47

1

我認爲你最終會浪費更多的時間來開發功能比實際開發webapp。與它一起生活吧,那就是你付錢的地方。我可以想象,這可能會讓PHP開發的開發人員感到沮喪,他們習慣於每一行新代碼都使用F5 /刷新......但是,這也取決於您使用的應用程序服務器。大多數只是支持hotdeploys。確保你的配置也是這樣做的,通常IDE應該已經關注這個(至少,我的是:Eclipse + Tomcat6或Glassfish3)。

它也可能取決於有問題的應用服務器,無論hotdeploys是否快速和/或成功。我已經體驗過Glassfish - 儘管它是一個慢起動器 - 非常快速在hotdeploys。我喜歡。 Tomcat在這方面有點慢,也不總是成功(例如,舊東西/垃圾仍然在內存中等等)。

+0

如果我等10秒鐘重新加載我的web應用程序,並且每月工作8個小時,我每小時重複加載3次,每次工作時間爲10 * 3 * 8 * 20 = 4800秒= 1小時20分鐘。我和其他5位開發人員一起工作,即每年爲我的一家小公司工作80個工時。這些東西加起來。 – Ramon 2010-03-05 14:49:16

+0

換句話說,您沒有使用hotdeploys和/或Glassfish?順便說一句:我真的不認爲你會得到這樣的事情發展,堅如磐石在80個小時內;) – BalusC 2010-03-05 14:53:34

+0

熱部署仍然需要服務層重新初始化自己 - 它* * *我試圖避免如此任何Web應用程序重新加載正是我試圖避免 - 熱或不。 – Ramon 2010-03-05 14:57:40

相關問題