File → New → Web Service Project,項目名 myWebSvc,框架選 JAX-WS,J2EE 選 Java EE 5.0

package com.myweb.ws;
public class SayHello {
public String sayHaha(String request) {
return "Haha, " + request + ", O.K. !";
}
}

File → New → Other → MyEclipse → Web Services → Web Service
com.myweb.ws.SayHelloGenerate WSDL in project自動生成:
SayHelloDelegationWebRoot/WEB-INF/wsdl/SayHelloService.wsdl 及 Schema


https://localhost:7001/myWebSvc/SayHelloPort 或 https://localhost:7001/WebRoot/SayHelloPort
WebLogic 自帶 JAX-WS 實現,項目中若包含 webservices-rt.jar 等庫會報 WSP_1014_POLICY_REFERENCE_DOES_NOT_EXIST 錯誤。解決:刪除項目中的 JAX-WS 2.1 Runtime/API 库。
Tomcat 無內置 JAX-WS,**必須**添加 JAX-WS API / Runtime 兩個庫,否則報 ClassNotFoundException: WSServletContextListener。
名為 UseWS

New → Web Service Client → WSDL 文件選服務端生成的 SayHelloService.wsdl



import com.myweb.ws.SayHelloDelegate; import com.myweb.ws.SayHelloService; public class Test { public static void main(String[] args) { SayHelloService svc = new SayHelloService(); SayHelloDelegate delegate = svc.getSayHelloPort(); String response = delegate.sayHaha("World"); System.out.println(response); // Haha, World, O.K. ! } }
4. 端口號修復(關鍵)
生成的 WSDL 中
soap:address location默認 8080,WebLogic 用 7001。需手動修改 WSDL:<soap:address location="https://localhost:7001/myWebSvc/SayHelloPort"/>跨機器測試時將
localhost改為服務器 IP。總結
JAX-WS Bottom-up 開發流程標準化程度高,核心注意點:容器自帶庫與項目庫衝突處理、WSDL 端口與實際部署一致性。WebLogic 部署需移除項目庫,Tomcat 需添加項目庫。