eclipse - 加速 Eclipse Web 浏览器中的代码更改?

标签 eclipse tomcat vaadin

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

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

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

如有任何帮助,我们将不胜感激!

最佳答案

在 Vaadin 中,大部分代码在服务器中运行,并包含在普通的 Java 文件中。资源/类更改分为三个级别:

  1. 运行时“热代码替换”。如果在 Debug模式下运行 Tomcat,则无需重新部署 Web 应用程序即可发布一些 Java 类更改。然而,如果 Tomcat 配置为“自动发布”(检查您在 Eclipse 中的服务器设置),只要类发生变化,就会自动完成重新部署,这会导致完整的上下文重新加载和 session 序列化(请参阅#2)。可以使用 JRebel 等工具增强热代码替换。

  2. Web 应用程序部署。这实质上是将一个新的 war 文件部署到服务器。导致取消部署先前版本并部署所有类和资源的新版本。有时服务器工作目录中有一些资源遗留或类未重新加载,在这种情况下需要重新启动服务器(#3)。

  3. 服务器重启。这使得整个 JVM 重新加载,所有类和 Web 应用程序也重新加载。仍然需要单独清理工作目录以确保重新加载所有内容。

除此之外还有 Vaadin 的客户端部分(本质上是用 GWT 编译的 JavaScript),它被 Tomcat 视为静态资源。如果您修改客户端 Java 代码,GWT 将用于重新编译 JavaScript。部署应该只是文件复制。浏览器缓存生成的 HTML/JS 文件,但 GWT 包含避免这种情况的机制。

您应该首先尝试更改自动发布的服务器设置,看看是否有帮助。另外,我注意到不同的 Tomcat 版本表现不同。这很不幸,但您唯一能做的就是尝试找到适合您的版本/设置。

关于eclipse - 加速 Eclipse Web 浏览器中的代码更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6521042/

相关文章:

java - GWT 是否有可能在我不知情的情况下创建客户端到服务器的连接?

eclipse - 如何从 eclipse 中删除关联文件类型?

eclipse - 如何让 MoreUnit 调试测试而不是运行测试?

java - 为什么我的 JUnit 测试没有在 Eclipse 中运行?

Eclipse Maven错误生命周期配置未涵盖插件执行:

java - 如何禁用tomcat的https

java - 我怎样才能在 context.xml 中指向不同的数据库

apache - 无法启动 Liferay tomcat 服务器

java - 在 vaadin 中自动完成?

java - 如何设置带有空字符串的 Vaadin 标签的宽度