首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java Axis 呼叫 WebService 返回 404 Not Found:端點地址配置錯誤排查

     編輯:程式設計疑難解答

錯誤堆疊關鍵信息

faultString: (404)Not Found
...
The requested resource (/ESS_DEV/services/EssQueryServer) is not available.
...
at EssQueryServerSoapBindingStub.communicationChange(...)

根因定位

Axis 客戶端生成的 Stub 類中,**端點地址(Endpoint URL)錯誤**,導致請求發往不存在的路徑 /ESS_DEV/services/EssQueryServer,Tomcat 返回 404。

排查步驟

  1. 檢查 EssQueryServerServiceLocator 生成的 getEssQueryServer() 方法,確認返回的 EssQueryServerSoapBindingStub 內部 _endpoint 字段;
  2. 對比服務端 WSDL 中的 <soap:address location="..."/> 真實地址;
  3. 常見差異:http vs https、端口號、Context Path(如 /ESS_DEV vs /ess)、服務名拼寫。

修正代碼

EssQueryServerServiceLocator locator = new EssQueryServerServiceLocator();
EssQueryServerSoapBindingStub stub = (EssQueryServerSoapBindingStub) locator.getEssQueryServer();

// 強制設置正確端點(從配置文件/屬性讀取)
String correctEndpoint = "https://host:port/ESS_DEV/services/EssQueryServer"; // 實際地址
stub._setProperty(Stub.ENDPOINT_ADDRESS_PROPERTY, correctEndpoint);

// 後續調用
String response = stub.communicationChange(requestXML);

最佳實踐

  • 端點地址**外部化配置**(Spring @Value / application.yml),避免硬編碼;
  • 使用 wsimport / cxf-codegen 重新生成客戶端代碼,確保與最新 WSDL 同步;
  • 啟用 Axis 日誌 org.apache.axis.transport.http.HTTPSender 級別 DEBUG,捕獲完整請求/響應報文便於排查。

總結

404 多為**客戶端端點地址與服務端實際部署路徑不一致**,核對並強制設置正確 Endpoint 即可解決。

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