安裝 Oracle 9i/10g/11g 後啟動 Tomcat,瀏覽器訪問 https://localhost:8080 彈出「位於 XDB 的服務器 localhost 要求用戶名和密碼」對話框。原因是 Oracle XML DB HTTP Server 預設佔用 8080 端口,導致 Tomcat 無法綁定。
$CATALINA_HOME/conf/server.xmlport="8080" 改為未被佔用的端口,如 8888、8081<Connector port="8888" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="150"
URIEncoding="UTF-8" />
https://localhost:8888 驗證優點: 兩服務共存,互不干擾。
缺點: 專案 URL 需帶端口號,生產環境通常前置 Nginx/Apache 反向代理至 80/443 端口,實際影響較小。
Win+R 輸入 services.mscOracleXETNSListener、OracleServiceXE 或名稱含 XML DB、HTTP Server 的服務sqlplus / as sysdba
EXEC DBMS_XDB.SETHTTPPORT(0);
-- 0 表示禁用 HTTP 端口
-- 若需改用其他端口:EXEC DBMS_XDB.SETHTTPPORT(8081);
優點: 釋放 8080 給 Tomcat 使用。
缺點: 失去 Oracle APEX、Enterprise Manager 等 Web 管理介面存取能力。
若使用 MyEclipse 內置 Tomcat:
Run As → Run Configurations...MyEclipse Tomcat → Server 標籤Port Number 為 8888 等| 作業系統 | 命令 |
|---|---|
| Windows | netstat -ano | findstr :8080 |
| Linux/macOS | netstat -tlnp | grep :8080 或 ss -tlnp | grep :8080 |
輸出結果中 PID 欄位可對應進程,配合 tasklist | findstr PID (Windows) 或 ps -p PID (Linux) 確認具體程式。
端口衝突是經典運維問題,核心原則是「明確佔用者、評估業務影響、選擇最小代價方案」。記錄本文三種方案,下次遇到同類問題可快速定位解決。