Eclipse可以自动刷新Tomcat应用吗?

时间:2011-07-24 17:24:57

标签: java eclipse tomcat

我使用Eclipse Indigo(EE)在Java框架Vaadin中构建应用程序, 使用Tomcat 7.0服务器。代码更改后我不会在浏览器中看到结果, 所以我需要点击选项“清理Tomcat工作目录.. ”并等到 Tomcat停止并启动服务器。

否则,当我刷新应用页面时,我看不到任何变化。 即使我重新启动服务器(当我保存更改时eclipse会自动重启它),而不清理tomcat目录。

选项“资源更改时自动发布”已启用。

有更快的方法吗?或者我可以自动化这个过程吗?

6 个答案:

答案 0 :(得分:6)

除了Kowser的答案之外,在调试模式下运行tomcat时可能会进行热代码更改。

否则您可以在JRebel

进行调查

答案 1 :(得分:3)

在Tomcat的“模块”标签中,您可以选择“编辑”并取消选中“自动重新加载启用”选项。

这样,几次更改就不需要重启(只要你以调试模式启动服务器)。

答案 2 :(得分:2)

不,没有别的办法。

只有在更新JSP / HTML / etc时才会注意到立即更改....不会自动加载/刷新类。当服务器处于活动状态时更改加载/实例化的类是不矛盾的,不是吗?至少它不应该是可能的。

最好在开发内容时执行单元测试。它可以帮助您减少恼人的服务器重启次数。

答案 3 :(得分:0)

如果您将项目设置为使用ant进行构建和部署,则只需将Ant构建器添加到项目构建器中,即可在每次保存文件后运行ant构建并部署目标。然后假设tomcat配置为支持自动部署,这应该实现你想要的,有两点需要注意:

  1. 如果你的项目需要花费几秒钟的时间来构建,那么在每次保存之后构建都是不切实际的。
  2. 如果多次重复部署相同的应用程序,则tomcat实例可能会耗尽内存。如果tomcat以某种方式无法从未部署的资源中恢复所有内存,则会发生这种情况。

答案 4 :(得分:0)

这可能是可能的。但是你的设置与我使用的设置略有不同。我只是使用tomcat + eclipse来使用Velocity和Torque进行Servlet开发。

以下内容适用于我,只要我在eclipse中保存,浏览器中就会显示更改。

我假设您有一个项目目录,例如

Apache的Tomcat的7.0.11 / web应用/ $ YOU_PROJECT / WEB-INF /类/

使用eclipse项目目录中的ln -s和WEB-INF中的classes目录创建符号链接。

然后配置eclipse将所有.class文件写入此目录。 (右键单击Eclipse中的项目并选择Properties,然后选择Java build path。

在$ tomcat / conf / context.xml配置文件中,第一个标记应为:

<Context allowLinking="true" reloadable="true">

如果还没有,请将以下内容添加到子项中。

<WatchedResource>WEB-INF/web.xml</WatchedResource>

这就是我所做的,但我不确定它是否适用于您的EE工具。

ps:此解决方案假设您使用的是linux / unix。我不知道它是否适用于Windows。主要问题是eclipse无法在项目目录之外编写类文件(这就是需要符号链接的原因)。

btw:Tomcat可能(根据类加载器,使用.jar文件和其他复杂的细节)在启用自动重新加载时泄漏大量内存,因此您可能希望增加允许的内存(主要是permgen)以防止内存不足来自tomcat的例外。

答案 5 :(得分:0)

我知道很久以前就已经问过这个问题了。但如果它对你们任何人都有帮助,请使用此信息。我使用Eclipse Kepler并在eclipse中配置Tomcat 7服务器。我不必执行任何其他配置,只需取消选中更新上下文路径复选框。就这些。将其他设置保留为默认值。

通过这种方式,资源文件(xhtml页面,css文件等)以及java源代码文件的更改将显示在浏览器中。仅对于类文件,将重新部署Web应用程序(不需要重新启动服务器以及手动操作)。

更新上下文路径的位置:双击 Server 选项卡下的tomcat服务器。在发布标签下,您会找到此更新上下文路径复选框。

绝对不需要为自动发布做任何其他更改。这适用于tomcat的正常模式和调试模式。

以下日食的屏幕截图:

enter image description here