2014-12-05 150 views
-1

我想用WildFly AS在JSF + Spring Framework中創建Java EE應用程序。其中一個熱門要求是: 即插即用模塊這意味着如果我更新我的應用程序或添加新的模塊到我的應用程序。 (顯然更新bean.xml,web.xml,POJO類,罐子等) 然後,不重新部署我的* .war文件,並與重新啓動我的Wildfly AS更改發生。即插即用Java EE應用程序

回答

3

這是一個複雜的要求,原因有幾個。您將如何處理對您的數據庫模式/實體模型的更改?您將如何處理升級時正在進行的會話,並積極使用「舊」代碼?您如何處理對容器託管代碼的更改,僅在部署時由容器管理的代碼,例如新的EJB等?

我在生產中看到的一種方法是實現應用程序版本控制和完全模式向後兼容性的滾動更新。這是在代理服務器前端的集羣環境中完成的,它可以允許使用舊版本應用程序的活動會話繼續,直到完成,並確保新會話轉到包含新版本代碼的服務器/上下文。因此,最終您仍然部署包含新版代碼的WAR,並在所有舊會話結束/過期時最終取消部署舊版本。爲此,您必須承擔代碼中的負擔,以便在新版本引入更改時完全支持您的模型的兩個同時版本。這不是一個微不足道的負擔。您還必須承擔額外基礎設施的負擔,才能適當地路由會話。

我知道像JRebel這樣的產品可以讓你對代碼進行熱部署(甚至像EJBs這樣的想法),它的想法是縮短開發/測試周期,但我沒有看到它在開發環境之外使用。此外,您仍然需要處理在舊版本/型號上啓動的活動會話。