JAX-WS 2.0 核心優勢
- 簡化 Web 服務開發,註解驅動 (
@WebService, @WebMethod)
- 支援 SOAP 1.1/1.2、XML/HTTP 多協議
- JAXB 2.0 數據綁定,運行時 JAR 體積更小
- 可部署於 Servlet 容器 (Tomcat) 或 EJB 容器 (GlassFish)
開發環境準備 (NetBeans 6.x + GlassFish V2 / Tomcat)
- 註冊 GlassFish 實例於 IDE
- 建立專案:Web Application (Servlet 容器) 或 EJB Module (EJB 容器)
- Java EE 版本設為 Java EE 5;Tomcat 需取消「源碼級別 1.4」
建立 Web 服務
- 右鍵專案 → New → Web Service
- 名稱:
CalculatorWS,包: org.me.calculator
- IDE 自動生成骨架類與部署描述符 (Tomcat 需
sun-jaxws.xml + web.xml 配置 WSServlet)
實作業務邏輯
@WebService()
public class CalculatorWS {
@WebMethod
public int add(@WebParam(name = "i") int i, @WebParam(name = "j") int j) {
return i + j;
}
}
部署與測試
- 專案屬性 → Run → Relative URL:
/CalculatorWSService?Tester (GlassFish) 或 /CalculatorWS?Tester (Tomcat)
- Run Project,瀏覽器開啟 Tester 頁,輸入參數測試
- EJB Module 無測試頁,查看 Output 窗口
BUILD SUCCESSFUL 確認部署
三類客戶端開發
客戶端 1:Java SE 應用程式
- New Project → Java Application
- New → Web Service Client → 瀏覽選擇專案中的 CalculatorWS
- 包名:
org.me.calculator.client
- 修改
Main.java:
public static void main(String[] args) {
CalculatorWSService service = new CalculatorWSService();
CalculatorWS port = service.getCalculatorWSPort();
System.out.println("Sum: " + port.add(3, 4)); // 輸出 7
}
客戶端 2:Web 應用 Servlet
- New Project → Web Application
- 建立 Web Service Client (同樣指向 CalculatorWS)
- New → Servlet:
ClientServlet,設為入口點 (Relative URL: /ClientServlet)
processRequest 中調用:
try {
CalculatorWSService service = new CalculatorWSService();
CalculatorWS port = service.getCalculatorWSPort();
int result = port.add(3, 4);
out.println("<p>Result: " + result + "</p>");
} catch (Exception ex) {
out.println("<p>Exception: " + ex + "</p>");
}
客戶端 3:JSP 頁面
- New Project → Web Application
- 建立 Web Service Client
- 展開
Web Service References,將 add 操作拖曳至 index.jsp
- 修改生成代碼參數為 3、4,Run Project 即見結果
關鍵注意事項
- 專案路徑不可包含空格 (NetBeans 當時已知問題)
- Tomcat 部署僅支援 Web Application 類型
- GlassFish Tester 頁支援互動測試,Tomcat 僅顯示部署成功