2012-06-21 27 views
1

我有一個具有不同層次的Web應用程序(即ui-> services-> core)。如果我必須更新其中一層,我必須重新啓動整個應用程序。所以我決定使用OSGI來分離這些圖層。然後我可以更新每個圖層而不重新啓動。這是一個很好的方法與OSGI拆分應用程序層

這是一個好主意還是osgi不是正確的方法?

回答

4

好了,我不能說,如果它是辦法,但肯定OSGi是一個好辦法。正如kctang在答案中指出的那樣,它的學習曲線相當陡峭。然而,它最終付出。嚴格的模塊化方法使您能夠實現對其他框架根本無法實現的關注點分離。

針對您的具體情況,我最近閱讀了OSGi in Depth中的一章,他們在OSGi中重點分層,重點關注雲部署。總而言之,遠程服務規範將幫助您將圖層分發到多臺機器上,這可以成爲企業應用程序的救命稻草。 另一本有趣的書是Enterprise OSGi in Action,但它目前只能通過Manning Early Access計劃獲得。

如果我必須非常重要,Framework實現者對JMX的支持仍然缺失。並不是說你不能用其他方式來管理你的更新(編程或不是),但這將會很有用。無論如何,這只是說OSGi有改進的餘地。

3

如果擔心要避免在開發過程中重新啓動整個應用程序,那麼OSGi不應該是第一個選擇查看的選項。檢查JRebel/LiveRebel等事情是否能滿足您的需求。

雖然OSGi可以實現像不需要重新啓動其他bundle/layers--如果你做得對 - 恕我直言,它有一些學習曲線能夠做到這一點。

一些進一步閱讀:

+1

應該指出,JRebel不是免費軟件。 –

+0

我同意動態重新加載不是使用OSGi的主要原因。要清楚的是,使用OSGi有巨大的好處,但動態加載是其中最少的。使用它的主要原因是模塊化,即你怎麼知道你的應用程序是正確分層的?你如何執行這種分層,如何隱藏不應該直接訪問它的層的功能等等。然而正如@k矩指出的那樣,如果你不關心模塊化,那麼JRebel是一個很好的商業選擇。 –

相關問題