本教程基於 MyEclipse 10.7 + JDK 1.6 環境,詳細演示從創建項目、編寫服務、發布測試到生成客戶端調用的全流程,並總結常見坑點解決方案。
TheService。com.hyan.service,新建類 ServiceHello。public class ServiceHello {
public String sayHello(String name) {
return "Hello, " + name + "!";
}
}
https://localhost:9001/Service/ServiceHello?wsdl,能看到 XML 定義即成功。TheClient。wsimport 生成代碼:wsimport -s G:\workspace\webService\TheClient\src -p com.hyan.client -keep https://localhost:9001/Service/ServiceHello?wsdl
參數說明:
-s:源碼輸出目錄(路徑不能包含空格)-p:生成包名-keep:保留 .java 源文件?wsdl 後綴,否則報 Could not find wsdl:servicecom.hyan.client 包下生成了 ServiceHello、ServiceHelloService 等類。package com.hyan.test;
import com.hyan.client.ServiceHello;
import com.hyan.client.ServiceHelloService;
public class ServiceTest {
public static void main(String[] args) {
ServiceHelloService factory = new ServiceHelloService();
ServiceHello proxy = factory.getServiceHelloPort();
System.out.println(proxy.sayHello("World"));
}
}
| 現象 | 原因 | 解決 |
|---|---|---|
編譯報 Wrapper class ... not found | JDK 版本 < 1.6.0_17 | 項目右鍵 Properties → Java Build Path → Libraries 換高版本 JDK |
directory not found 路徑含空格 | wsimport -s 路徑有空格 | 移至無空格路徑或用雙引號包裹 |
Could not find wsdl:service | wsimport 命令缺 ?wsdl | 補全 WSDL 地址後綴 |
jaxws-maven-plugin 自動化生成客戶端代碼。