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

Axis Web 服務開發:客戶端呼叫 Axis2 服務完整指南

     編輯:Java 相關知識

Axis 客戶端訪問 Axis2 服務實作

Apache Axis 是早期廣泛使用的 Java Web Service 框架,雖然 Axis2 已取代其地位,但在維護舊系統時仍需了解如何使用 Axis 1.x 客戶端呼叫 Axis2 部署的服務。本文透過完整代碼示範如何建立客戶端連線並呼叫遠端服務。

必要依賴套件

專案需包含以下 JAR 檔案:

  • axis.jar
  • commons-logging-1.0.4.jar
  • commons-discovery-0.2.jar
  • jaxrpc.jar
  • saaj.jar
  • wsdl4j-1.5.1.jar
  • log4j-1.2.8.jar

客戶端完整代碼實作

package samples.clients;

import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;

public class StockQuoteServiceClient {
    public static void main(String[] args) {
        try {
            // 服務端點 URL,指向 Axis2 部署的 WSDL
            String endpointURL = "https://localhost:8080/Axis2Web/services/StockQuoteService?wsdl";
            
            Service service = new Service();
            Call call = (Call) service.createCall();
            
            // 設定目標端點位址
            call.setTargetEndpointAddress(new java.net.URL(endpointURL));
            
            // 設定操作名稱(需與 WSDL 定義一致)
            call.setOperationName(new QName("https://quickstart.samples/xsd", "getPrice"));
            
            // 新增輸入參數
            call.addParameter("symbol", XMLType.SOAP_STRING, ParameterMode.IN);
            
            // 設定回傳型別
            call.setReturnType(XMLType.SOAP_STRING);
            
            // 呼叫服務並取得結果
            String ret = (String) call.invoke(new Object[] { "ShenBin" });
            System.out.println("服務回應: " + ret);
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

關鍵點解析

  • Service 與 Call 物件:Axis 1.x 使用動態呼叫模式,透過 Service.createCall() 建立 Call 實例
  • QName 定義:操作名稱需包含命名空間 URI 與本地名稱,必須與伺服器端 WSDL 定義完全一致
  • 參數模式:ParameterMode.IN 表示單向輸入參數,另有 INOUT、OUT 可供選擇
  • 資料型別對應:使用 XMLType.SOAP_STRING 對應 Java String 型別

常見問題排查

  1. 若出現 ClassNotFoundException,請確認所有依賴 JAR 已加入 classpath
  2. 連線失敗時檢查防火牆設定與服務是否正常啟動
  3. 命名空間不匹配會導致「Operation not found」錯誤,請對照 WSDL 確認

官方文件參考:Apache Axis 專案首頁

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