2010-10-11 96 views
2

當我爲Vaadin創建一個簡單的「hello world」應用程序時,將其部署到服務器並在瀏覽器中鍵入應用程序URL,我必須等待約5-10秒才能顯示應用程序。下一次運行很快,但是當我重新部署或熱插拔課程時,我必須再等一等。當我將它添加到數據庫啓動時間,服務器啓動時間等時,它需要很長時間。如何在調試模式下提高Vaadin啓動速度?

有什麼辦法可以消除Vaadin啓動的這種緩慢嗎?這很重要,因爲每一個額外的緩慢使得修改+運行+測試編程週期更令人沮喪 - 並非所有的代碼都可以通過單元測試,測試一些東西的唯一方法是手動修改+運行+測試。

GWT調試模式存在類似的問題。因爲Vaadin基於GWT,或許這種緩慢的原因不在於Vaadin,而是在GWT中?

我的環境:的IntelliJ 9 + Tomcat的6 + Windows 7的64位+快速的Core 2 Duo

回答

2

如果Vaadin應用程序重新啓動時速度很慢:請檢查您的Application.init()方法是否不會造成太大的負擔 - 數據庫連接,裝載大量數據等。 您可以強制此會話在Vaadin中重新啓動URL參數?restartApplication

如果即使應用程序未重新啓動(UI狀態仍然存在),熱部署仍然很慢:這與Vaadin的客戶端(GWT)部分有關。可能是緩存被完全忽略。 Widgetset opimization可能會有幫助。

+0

在這兩種情況下,重新啓動都很慢。即使使用簡單的'hello world'應用程序也很慢,而Application.init()中沒有任何代碼 – iirekm 2010-10-21 10:52:19

1

問題是由所有加載首次Java類引起的,後續調用可以使用緩存的類。

然而5-10秒是,imho,真的不那麼糟糕,我已經糟糕了。

+0

5-10秒與大約只有30 Vaadin類的小型應用程序。我想這隻會在代碼庫增長時變慢。 – iirekm 2010-10-11 18:03:55

2

Vaadin花大部分時間在這裏 com.vaadin.terminal.gwt.server.AbstractApplicationServlet#serveStaticResourcesInVAADIN (實際上servlet容器,不vaadin本身)

我想這是因爲vaadin.jar太大。

因此,您可以將VAADIN目錄從vaadin.jar提取到您的webRoot,並且應用程序啓動時間將縮短。

其他都很好(但支付)的解決方案是http://zeroturnaround.com/jrebel