2011-06-29 52 views
0

我正在開發一個在Eclipse中使用Vaadin框架的應用程序。我正在使用Tomcat v6.0 servlet並在Eclipse Web瀏覽器中運行應用程序。但是我一直有的問題是當我測試應用程序時,瀏覽器會顯示最近的更改。加快Eclipse Web瀏覽器中的代碼更改?

無論我重新啓動Tomcat多少次,清除所有已發佈的資源並重新啓動Eclipse Web瀏覽器,所做的更改仍不會生效。這些變化似乎隨機生效,時間是最大的因素,這是發展中的最大挫折...

所以我的問題是,如果任何人已經注意到這個問題,並有任何想法如何解決它,如果有一個配置我可以做,或者如果我失去了重新啓動一個步驟阻止更改生效..?

任何幫助將不勝感激!

+1

在常規的Web瀏覽器中發生更改嗎? – Giann

+0

您是指服務器端組件更改還是客戶端小部件更改?什麼版本的Eclipse? –

回答

1

在Vaadin中,大部分代碼都在服務器上運行,並且包含在普通的Java文件中。有三個級別的資源/類更改:

  1. 運行時「熱代碼替換」。如果在調試模式下運行Tomcat,則可以發佈某些Java類更改,而無需重新部署Web應用程序。但是,如果Tomcat配置爲「自動發佈」(在Eclipse中檢查您的服務器設置),則每當類更改時都會自動完成重新部署,這會導致完全上下文重新加載和會話序列化(請參閱#2)。熱代碼替換可以使用像JRebel這樣的工具來增強。

  2. Web應用程序部署。這基本上是部署一個新的戰爭文件到服務器。導致先前的版本被取消部署,並部署新版本的所有類和資源。有時服務器工作目錄中還剩下一些資源,或者類沒有重新加載,在這種情況下需要重新啓動服務器(#3)。

  3. 服務器重啓。這使得整個JVM重新加載,所有類和Web應用程序也重新加載。仍然需要單獨清理工作目錄以確保重新加載所有內容。

除此之外,還有Vaadin的客戶端部分(本質上是一個用GWT編譯的JavaScript),它被Tomcat視爲靜態資源。如果您修改客戶端Java代碼,那麼GWT將用於重新編譯JavaScript。部署應該只是文件複製。瀏覽器緩存生成的HTML/JS文件,但是GWT包含避免這種情況的機制。

您應該先嚐試更改自動發佈的服務器設置,看看是否有幫助。另外,我注意到不同的Tomcat版本的行爲有所不同。這很不幸,但你唯一能做的就是試着找到適合你的版本/設置。

+0

即時通訊使用開普勒eclipse和tomcat,我得到同樣的問題。我在哪裏可以設置自動發佈 – bumbumpaw

0

只是爲了確保:您已經在URL中重新加載?restartApplication以強制應用程序在頁面重新加載時重新啓動,不是嗎?