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

解決 Tomcat 與 Oracle 8080 端口衝突的三種方案

     編輯:Java 相關知識

問題現象

安裝 Oracle 9i/10g/11g 後啟動 Tomcat,瀏覽器訪問 https://localhost:8080 彈出「位於 XDB 的服務器 localhost 要求用戶名和密碼」對話框。原因是 Oracle XML DB HTTP Server 預設佔用 8080 端口,導致 Tomcat 無法綁定。

方案一:修改 Tomcat 端口(推薦,不影響 Oracle)

步驟:

  1. 打開 $CATALINA_HOME/conf/server.xml
  2. 找到 HTTP/1.1 Connector 配置(約第 69 行)
  3. 將 port="8080" 改為未被佔用的端口,如 8888、8081
<Connector port="8888" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           maxThreads="150"
           URIEncoding="UTF-8" />
  1. 重啟 Tomcat
  2. 瀏覽器訪問 https://localhost:8888 驗證

優點: 兩服務共存,互不干擾。
缺點: 專案 URL 需帶端口號,生產環境通常前置 Nginx/Apache 反向代理至 80/443 端口,實際影響較小。

方案二:停用 Oracle XML DB HTTP Server

Windows 服務管理:

  1. Win+R 輸入 services.msc
  2. 找到 OracleXETNSListener、OracleServiceXE 或名稱含 XML DB、HTTP Server 的服務
  3. 右鍵 → 停止,並將啟動類型改為「手動」或「禁用」

SQL*Plus 命令行永久禁用:

sqlplus / as sysdba
EXEC DBMS_XDB.SETHTTPPORT(0);
-- 0 表示禁用 HTTP 端口
-- 若需改用其他端口:EXEC DBMS_XDB.SETHTTPPORT(8081);

優點: 釋放 8080 給 Tomcat 使用。
缺點: 失去 Oracle APEX、Enterprise Manager 等 Web 管理介面存取能力。

方案三:MyEclipse 內置 Tomcat 端口調整

若使用 MyEclipse 內置 Tomcat:

  1. 專案右鍵 → Run As → Run Configurations...
  2. 選中 MyEclipse Tomcat → Server 標籤
  3. 修改 Port Number 為 8888 等
  4. Apply → Run

驗證端口佔用的通用命令

作業系統命令
Windowsnetstat -ano | findstr :8080
Linux/macOSnetstat -tlnp | grep :8080 或 ss -tlnp | grep :8080

輸出結果中 PID 欄位可對應進程,配合 tasklist | findstr PID (Windows) 或 ps -p PID (Linux) 確認具體程式。

最佳實踐建議

  • 開發環境: 採用方案一,Tomcat 改 8888,Oracle 保留 8080,互不干擾。
  • 生產環境: Tomcat 盡量不直接對外暴露 8080,前置 Nginx 反向代理至 80/443;Oracle XML DB HTTP Server 建議禁用或改端口並限制存取 IP。
  • 容器化部署: Docker Compose 映射不同宿主端口,彻底隔離衝突。

結語

端口衝突是經典運維問題,核心原則是「明確佔用者、評估業務影響、選擇最小代價方案」。記錄本文三種方案,下次遇到同類問題可快速定位解決。

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