JAX-RPC (JSR-101) 是 Java 標準遠程過程調用 API,定義 javax.xml.rpc.Call、Service、Stub 等介面。Axis 1.4 是 Apache 提供的參考實作,雖已進入維護模式,但仍廣泛用於舊系統。
axis-bin-1_4.zip,解壓至 /usr/local/java/axis-1_4axis-1_4/webapps/axis 複製到 Tomcat webapps/https://localhost:8080/axis/ 應見 Axis 首頁

activation.jar、mail.jar 至 Tomcat lib/)

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 本書與關鍵字 */ }
}
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]
cp BookSearcher.java $TOMCAT_HOME/webapps/axis/BookSearcher.jws
Axis 偵測到 .jws 自動編譯、部署、產生 WSDL。
訪問 https://localhost:8080/axis/BookSearcher.jws → 點選 Click to see the 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。
server-config.wsdd。第二篇將示範如何撰寫 Client 端程式碼呼叫此服務,並說明 Classpath 設定與 QName 使用細節。