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

JAX-RPC 實作 Web 服務(一):從安裝 Axis 到發布第一個 RPC 服務

     編輯:Java 相關知識

JAX-RPC 與 Axis 簡介

JAX-RPC (JSR-101) 是 Java 標準遠程過程調用 API,定義 javax.xml.rpc.Call、Service、Stub 等介面。Axis 1.4 是 Apache 提供的參考實作,雖已進入維護模式,但仍廣泛用於舊系統。

安裝與驗證 Axis

  1. 下載 axis-bin-1_4.zip,解壓至 /usr/local/java/axis-1_4
  2. 將 axis-1_4/webapps/axis 複製到 Tomcat webapps/
  3. 重啟 Tomcat,瀏覽 https://localhost:8080/axis/ 應見 Axis 首頁
    Tomcat 首頁 Axis 首頁
  4. 點選 Validation 檢查缺少 JAR(通常需補 activation.jar、mail.jar 至 Tomcat lib/)
    Validation 頁面
  5. 點選 Call 測試內建服務,回傳 SOAP XML 即安裝成功
    Call 測試

開發第一個 RPC 服務:BookSearcher

1. 撰寫純 Java 類別(無任何 JAX-RPC 相依)

package dw.ibm;
import java.util.*;

public class BookSearcher {
  private Map> books = new HashMap<>();

  public BookSearcher() { addBooks(); }

  public void addBook(String title, List keywords) { books.put(title, keywords); }
  public List getKeywords(String title) { return books.get(title); }
  public void addKeyword(String title, String kw) { /* 略 */ }

  public List search(String keyword) {
    List result = new ArrayList<>();
    for (Map.Entry> e : books.entrySet())
      if (e.getValue().contains(keyword)) result.add(e.getKey());
    return result;
  }

  private void addBooks() { /* 加入 5 本書與關鍵字 */ }
}

2. 單元測試驗證邏輯

public class BookSearchTester {
  public static void main(String[] args) {
    BookSearcher s = new BookSearcher();
    System.out.println("Keywords for 'Purple Cow': " + s.getKeywords("Purple Cow"));
    System.out.println("Books for 'design': " + s.search("design"));
  }
}

輸出:

Keywords for 'Purple Cow': [marketing, business, commercials, consumers]
Books for 'design': [Emotional Design, Indexed]

3. 發布為 .jws 服務(最簡單方式)

cp BookSearcher.java $TOMCAT_HOME/webapps/axis/BookSearcher.jws

Axis 偵測到 .jws 自動編譯、部署、產生 WSDL。

4. 瀏覽器驗證 WSDL

訪問 https://localhost:8080/axis/BookSearcher.jws → 點選 Click to see the WSDL
服務部署成功

WSDL 深度解析

WSDL (Web Services Description Language) 是服務契約,包含:

  • <wsdl:types>:定義複雜型別(Map、Vector、ArrayOf_xsd_anyType)對應 Java Collection。
  • <wsdl:message>:每個操作的 Request/Response 訊息結構。
  • <wsdl:portType>:服務介面,列出所有操作(search、addBook…)與參數順序。
  • <wsdl:binding>:SOAP 綁定細節(encodingStyle、namespace)。
  • <wsdl:service>:端點位址(https://localhost:8080/axis/BookSearcher.jws)。

完整 WSDL 見原文 清單 10。理解 WSDL 可在無原始碼時編寫 Client。

RPC 核心概念釐清

  • RPC ≠ RMI:RPC 跨語言、基於 SOAP/HTTP;RMI 純 Java、二進制協議。
  • 發布服務:將類別方法公開為遠端可呼叫操作。
  • .jws 機制:Axis 獨有,開發期方便;生產環境建議打包 WAR 並配置 server-config.wsdd。

下一步

第二篇將示範如何撰寫 Client 端程式碼呼叫此服務,並說明 Classpath 設定與 QName 使用細節。

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