在 MyEclipse 中以 Debug 模式啟動 Tomcat 時,修改 Java 類方法體代碼後,需重啟容器才能生效,嚴重影響調試效率。
Tomcat 5.5+ 支援類熱替換(僅限方法體修改,不涉及結構變更)。關鍵在 server.xml 的 <Context> 元素上不添加 reloadable 與 debug 屬性。
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/media" docBase="D:\temp\media"/>
<Context path="" docBase="D:\workspace\voice_internet\src\main\webapp"/>
</Host>
conf/server.xml<Host> 區塊,配置項目對應的 <Context>reloadable="true" 或 debug="0" 等屬性Tomcat 預設 reloadable=true 會監控 WEB-INF/classes 與 WEB-INF/lib 變更並重載整個 WebApp。移除該屬性後,僅依賴 JVM 的 HotSwap 能力(Debug 模式下)替換方法體字節碼,避免完整重載帶來的 Session 丟失、初始化開銷等問題。