首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Tomcat 啟動雙重加載導致資源初始化兩次:Eclipse Server Locations 配置衝突

     編輯:Java 相關知識

現象:Tomcat 啟動時專案載入兩次,ServletContextListener、Spring 容器、連接池全雙重初始化。

根因

Eclipse Server 設定 Server Locations → "Use Tomcat installation" 會導致:

  1. Eclipse 將專案部署到 wtpwebapps/ 並寫入 server.xml Context
  2. Tomcat 原生 appBase="webapps" 自動掃描部署專案
  3. 同一專案被部署兩次 → 雙重初始化

解決方案一:清理 server.xml Context

<!-- 刪除 server.xml 中對應專案的 Context 節點 -->

副作用:Eclipse Server 視圖 Web Modules 列表為空。

解決方案二:隔離 appBase(推薦)

  1. Tomcat 目錄下建立空目錄 webroot/
  2. 修改 server.xml:<Host appBase="webroot">
  3. Context 指向專案實際路徑:docBase="../webapps/myapp-web"(相對路徑)
<Host name="localhost" appBase="webroot" ...>
  <Context path="/myapp" docBase="../webapps/myapp-web" reloadable="true" />
</Host>

最簡方案:不修改 Server Locations

保持預設 "Use workspace metadata",Eclipse 完全接管部署,無衝突、無雙重加載。

驗證

啟動日誌中 Initializing Spring root WebApplicationContext 僅出現一次。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved