2011-06-29 27 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以强制应用程序在页面重新加载时重新启动,不是吗?