2015-09-08 98 views
2

我可以编写一个ant脚本,将更新的类文件复制到tomcat中的web-inf\classes。但是我怎么能告诉Tomcat 7.0自动从web-inf/classes目录中选取已更改的类文件?如何在tomcat中启用热部署

我尝试在tomcat主机配置server.xml中设置autoDeploy="true",但是当检测到更改时,Tomcat会话被销毁。 我可以很容易地在的IntelliJ

替代 eclipse tomcat plugin
+0

另请参见https://stackoverflow.com/a/6584259/32453 – rogerdpack

回答

4

的Tomcat只能热插拔某些类型的文件,如JSP,和静态文件如JavaScript,CSS等,如果你turn off cacheing但不能热插拔的Java类,只有重新启动Web应用程序。为了实现热插拔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> 

在任何合并,我会避免使用Eclipse Tomcat插件有两个原因。

  1. 在大多数版本的Eclipse中,已经包含Tomcat作为服务器适配器并带有一些选项。
  2. 防止IDE使用插件进行膨胀。
+0

谢谢,我有一个类似的脚本。我想知道如何在eclipse中使用eclipse tomcat插件完成它。它支持在tomcat中的热部署而不会破坏 – lili

+0

Eclipse可以让你在tomcat中免费进行热插拔,而不是JRebel。我想知道它是如何做到的,因为我想在Intellij中做同样的事情 – lili

-1

显然,另一种选择是使用jetty(例如,在开发过程中),它可以更轻松地进行热切换。