2015-11-29 69 views
0

罐子我試圖來管理我的我的發揮框架的應用程序的依賴關係。我正試圖刪除/更新我的類路徑中存在的一些jar。這甚至可能嗎?播放框架卸載在運行時

這將是巨大的,得到的是如何確實起到框架管理類加載器的解釋。我明白,爲了在開發模式下獲得熱重新部署代碼播放正在重新啓動應用程序類加載器並再次加載所有類。這是對的嗎?

非常感謝!

回答

1

它沒有真正發揮管理的熱點重裝而是播放SBT插件。

一個Play應用程序的main方法是play.core.server.NettyServer。該方法接收SBTLink類型的重新加載器,並且每次請求到達服務器時,應用程序都會委派檢查是否有任何代碼更改到重新加載器的任務。

如果已經存在一個碼改變,則現有的類加載器被去除並且用新的,其包括更新的字節碼代替。應用程序重新啓動,但是,當然,JVM不是。

遊戲的目的不是要在運行時JAR的提供動態交換。爲此,您需要查看諸如OSGi之類的東西(在與其合作幾年之後,我不會推薦它)。

+0

爲什麼你不推薦使用osgi?它似乎回答了我的需求,但我真的不知道它如何與我的Play框架應用程序集成?有一些指導會很棒,非常感謝! – OmriKaduri

+0

OSGi的優缺點是一場相當漫長的辯論。讓我們從個人的角度來說,我不喜歡它構建在線應用程序。對於插件是核心功能的基於服務的體系結構,例如。像IDE這樣的工具是一個不錯的選擇,但在實踐中,我發現在OSGi上爲Web應用程序投入時間往往不值得。您幾乎不能將Play與OSGi集成 - 它們是針對相對不同的用例設計的。 OSGi可能會解決您的運行時需求,但對您的項目有多重要? – Nio

+0

那麼這不是我的項目必須具備的要求,但它是一個功能,可以幫助我們在很多情況下。你將如何使用Play應用程序來實現它?還是迫使我改變我的框架?我發現vert.x似乎能夠滿足我的需求,您對此有何看法?謝謝。 – OmriKaduri