修改Java檔案不用重啟Tomcat服務的方法

真我的風采i發表於2017-06-11

在tomcat的安裝目錄的conf檔案中找到server.xml這個檔案,在 <Host>結點裡面加上

<Context docBase="工程物理路徑" path="/工程名" reloadable="true" source="org.eclipse.jst.j2ee.server:工程名稱"/>  

比如對於開發專案test:新增

<Context docBase="D:/Tomcat/tomcat-7.0.4/test" path="/test" reloadable="true" source="org.eclipse.jst.j2ee.server:test"/>

儲存檔案,在test的後臺類檔案中書寫一句System.out.println("哈哈");啟動tomcat,待順利列印後,修改列印內容,但不重啟tomcat,發現還真列印出來新的內容了;

一點麻煩的就是每開發一個專案都要去修改配置檔案,不過總比每次修改一個類都要重啟來的方便的多。

特別要注意,如果你將該專案從tomcat中刪除後,必須將這配置也刪除,否則啟動伺服器會一直包找不到test專案的錯的.

--------

修改
%TOMCAT_HOME%\conf\server.xml
大致如下:
<Context path="" docBase="ROOT" debug="0"  reloadable="true"/>

1.path後面寫<url-pattern>裡面的路徑,docBase寫你的web應用的名稱。比如你的目錄文tomcat/webapp/testapp。那麼docBase寫的是/testapp2.MyEclipse裝好後,只要指定了tomcat的目錄,修改Servlet後,伺服器會自動reload


==============================================

如何才能在不重啟伺服器的或者重新部署專案的情況下,修改了Java類檔案後可以繼續debug!當然還有個前提,那就是不能修改方法名或者引數個數,否則是一定要重啟的!

將 %tomcathome%\conf\context.xml 中的Context標籤修改如下:

  <Context reloadable="true">

  </Context>

 

///////////////////////////////////////////////////////

後來發現原來設定也很簡單,myEclipse設定對應的tomcat時,只需要在jdk的Optional Java VM arguments中新增如下設定:

-Xms256m -Xmx512m
-Dcom.sun.management.jmxremote=true  <!--StartFragment --> 

第一行是設定tomcat的記憶體的,這個根據個人具體環境更改,

第二行的實際意義其實我也不是很清楚,但增加這一行後,在不重啟服務的時候,修改了java類檔案可以繼續debug,這對於專案相對比較大的程式設計師來說有很大的幫助,因為專案在重啟的時候往往需要花費好幾分鐘的時間,而且有時候往往會因為一些設定需要反覆的除錯!

===========================================

在公司,一直很奇怪為什麼有的同事修改一個類實現的時候不用重啟tomcat也能部署新的變動,而有的卻不能。

之前特地比較過相互間系統和MyEclipse的配置,結果發現即使是一樣的配置也沒有用。

直到最近才發現,原來問題是在啟動服務時的區別,有的人用MyEclipse啟動Tomcat的時候使用的是Run模式,而有的則是使用Debug模式,於是發現問題所在了,MyEclipse會記住最後一次啟動服務的模式,然後以後每次啟動預設都是使用最後一次的模式啟動服務的,所以我們在配置一樣,操作一樣的情況下(使用工具欄的啟動按鈕[預設]),會出現不一樣的結果。

其實只要使用Debug模式啟動Tomcat服務就可以使MyEclipse自動部署改動過的類了。

修改啟動模式,可以進入Window->Show View裡面開啟Servers檢視皮膚,然後右擊其中的Tomcat使用Run Server/Debug Server啟動即可。

注:當方法體外的程式碼[方法名/引數/類修改]被修改時,Debug模式是無法更新這種變動的,MyEclipse會自動提示是否需要重啟服務的

=======================================



  1. 修改Tomcat的配置檔案

  2. 找到部署tomcat的服務路徑(譬如:D:\Tomcat6.0\apache-tomcat-6.0.36\conf),解釋:tomcat路徑就是執行專案的部署伺服器路徑。

  3. 在conf資料夾下找到server.xml檔案 修改裡面的reloadable=true 為reloadable=false;

  4. reloadable屬性屬於部署專案的<context/>標籤的屬性。

  5. 譬如:<Context debug="0" docBase="D:\JavaCode\E-bsoft\CDCPro\WebRoot" path="/CDCPro" reloadable="false"/>  


相關文章