2010-11-11 47 views
6

我有一個配置爲Guice,JerseyEclipseLink的小型web應用程序,並且在開發期間在jetty(8.0.0.M1)上運行此應用程序。大約有10個(小)JPA託管類(實體和可嵌入類),總共約20個類。在Jetty上加速應用程序啓動

第一次請求的初始啓動需要15秒+5秒。看起來JPA正在處理第一個請求,因爲我已經啓用了表生成策略「create」並在第一個請求中查看Maven的一些JPA輸出。

重新加載大約需要10秒,重新加載後的第一個請求需要大約3到4秒。

您可能認爲啓動時間並不那麼糟糕,但我想知道是否可以像Django一樣加速啓動,使其更加流暢。任何啓動調整的想法?

+0

您擔心啓動時間本身,還是第一個用戶必須支付啓動成本?如果是後者,則可以讓應用程序在啓動時向其自身發送請求,以便對其進行預熱。然後第一個用戶看到一個正常的響應時間。 – 2010-11-11 13:36:03

+0

我擔心的是開發過程中的啓動時間。重新生產在生產中比較少見,所以我會接受第一個用戶必須等待幾秒鐘。 – deamon 2010-11-11 20:07:37

+1

如果由於代碼更改(不是模式更改)而重新啓動,請儘量避免使用JRebel(http://www.zeroturnaround.com/jrebel/)完全重新啓動(幾乎)。這不是免費的,但它可以節省很多時間(我絕不隸屬於他們)。 – DaGGeRRz 2010-11-17 17:24:36

回答

2

恐怕如果您不準備刪除表創建策略,您將不得不容忍這樣的加載時間。實質上,每次啓動應用程序時,它都會刪除/創建/驗證表併發出正確的DDL語句,以使其與包中的實體相匹配。

假設您完成了定義實體的工作,並且您正在開發一些業務邏輯代碼,那麼您可以創建一次數據庫,然後重新使用初始設置。

0

我想你正在使用Jetty進行快速應用程序開發(RAD),並且希望儘快查看並測試任何更改。如果您的RAD環境的數據庫沒有實際的「持久性」要求,那麼您可以嘗試轉移到im-memory數據庫引擎。 DB引擎就像HSQL一樣,與實際的生產質量數據庫引擎相比,您可以非常快速地創建新表格(以及其他結構)。這將需要您使用ORM,因爲HSQL的SQL與其他大多數數據庫非常不同,但聽起來您已經在使用JPA,所以這應該不困難。

我看到的唯一選擇是使用一個數據庫,它的模式已經正確創建並且不會每次都丟棄它。

+0

我正在使用內存中的數據庫(德比)。 – deamon 2010-11-18 16:21:58

相關問題