【问题标题】:Speeding up code changes in Eclipse Web Browser?加快 Eclipse Web 浏览器中的代码更改?
【发布时间】:2011-06-29 13:01:32
【问题描述】:

我正在使用 Eclipse 中的 Vaadin 框架开发一个应用程序。我正在使用 Tomcat v6.0 servlet 并在 Eclipse Web 浏览器中运行该应用程序。我一直遇到的一个问题是,当我测试应用程序时,最近的更改会显示在浏览器中。

无论我重新启动 Tomcat 多少次,清理所有已发布的资源并重新启动 Eclipse Web 浏览器,更改仍然不会生效。这些变化似乎在时间是最大因素的情况下随机生效,这在开发时非常沮丧......

所以我的问题是,是否有其他人注意到这个问题并且对如何解决它有任何想法,是否有我可以做的配置,或者我是否在重启过程中遗漏了阻止更改生效的步骤..?

任何帮助将不胜感激!

【问题讨论】:

  • 更改是否发生在常规网络浏览器中?
  • 您指的是服务器端组件更改还是客户端小部件更改?什么版本的 Eclipse?

标签: eclipse tomcat vaadin


【解决方案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 版本的行为不同。这很不幸,但您唯一能做的就是尝试找到适合您的版本/设置。

【讨论】:

  • 我遇到了同样的问题,我使用的是开普勒 Eclipse 和 tomcat。我在哪里可以设置自动发布
【解决方案2】:

只是为了确保:您一直在 URL 中添加 ?restartApplication 以强制应用程序在页面重新加载时重新启动,不是吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2017-06-11
    • 2011-06-22
    • 2014-02-27
    相关资源
    最近更新 更多