如何在tomcat中启用热部署

lil*_*ili 7 tomcat intellij-idea java-ee tomcat7

我可以写一个ant脚本,将更新的类文件复制到web-inf\classestomcat中.但是,如何告诉Tomcat 7.0自动从web-inf/classes目录中获取更改的类文件?

我尝试autoDeploy="true"在tomcat主机配置中设置,server.xml但是当检测到更改时,Tomcat会话被销毁.我可以轻松地在Intellij中替换eclipse tomcat插件

lil*_*ili 10

我最终使用HotSwapAgent工具.这是JRebel的免费替代品


小智 6

如果关闭缓存,但Tomcat只能热交换某些类型的文件(如JSP)和静态文件(如JavaScript,CSS等),而不能热交换Java类,则只能重新启动Webapp。为了实现Java类的热交换,我到处都看到了JRebel的广告,但是没有尝试过使用它们的产品。

但是,您可以通过注释掉Tomcat文档站点中说明的指令来保留Tomcat会话:http : //tomcat.apache.org/tomcat-7.0-doc/config/manager.html#Disable_Session_Persistence

最后,您可以编写ANT脚本来组装WAR并在每次执行脚本时重新部署。

示例build.xml:

...
<target name="tomcat-stop">
    <exec executable="${server.home}/bin/catalina.bat">
        <arg value="stop"/>
    </exec>
</target>

<target name="tomcat-start">
    <exec executable="${server.home}/bin/startup.bat">
        <arg value="start"/>
    </exec>
</target>
...
<target name="all" depends="tomcat-stop,clean,init,compile,junit-slow,make_war,deploy,tomcat-start"></target>
Run Code Online (Sandbox Code Playgroud)

在任何合并中,出于两个原因,我都将避免使用Eclipse Tomcat插件。

  1. 在大多数版本的Eclipse中,已经包括Tomcat作为服务器适配器,并带有一些选项。
  2. 防止IDE因插件而膨胀。