2015-09-08 172 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(例如,在開發過程中),它可以更輕鬆地進行熱切換。