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

Eclipse + XFire + Tomcat 快速開發 Web Service 實戰教程

     編輯:Java 相關知識

工具版本

  • Eclipse 3.1.2
  • Tomcat 5.5
  • XFire 1.1

步驟詳解

  1. 建立 Dynamic Web Project:命名 XFireZhuweiTest
  2. 導入 XFire 用戶庫:包含 xfire-all-1.1.jar 與 lib 目錄所有檔案
  3. 複製 JAR 到專案:WebContent/WEB-INF/lib
  4. 修改 web.xml:配置 XFireConfigurableServlet 處理 /services/* 與 /servlet/XFireServlet/*
    <servlet>
      <servlet-name>XFireServlet</servlet-name>
      <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>XFireServlet</servlet-name>
      <url-pattern>/services/*</url-pattern>
    </servlet-mapping>
  5. 編寫服務類別:com.zhuweisky.xfireDemo.MathService
    public class MathService {
        public int Add(int a, int b) { return a + b; }
    }
  6. 建立 services.xml:WebContent/META-INF/xfire/services.xml
    <beans xmlns="https://xfire.codehaus.org/config/1.0">
      <service>
        <name>MathService</name>
        <namespace>https://com.zhuweisky.xfireDemo/MathService</namespace>
        <serviceClass>com.zhuweisky.xfireDemo.MathService</serviceClass>
      </service>
    </beans>

    XFire 透過 Spring 解析此檔發布服務。

  7. 關鍵步驟:調整 META-INF 位置
    問題:啟動後訪問 ?wsdl 拋 FileNotFoundException: META-INF/xfire/services.xml。
    解決:在 WebContent/WEB-INF 建立 classes 資料夾,將整個 META-INF 移動至 classes 下。最終結構:

    專案目錄結構

  8. 啟動測試:Run As → Run On Server 關聯 Tomcat,訪問 https://localhost:8080/XFireZhuweiTest/services/MathService?wsdl 獲取 WSDL
  9. C# 客戶端測試:
    string url = "https://localhost:8080/XFireZhuweiTest/services/MathService";
    object[] args = {1, 2};
    object result = ESFramework.WebService.WebServiceHelper.InvokeWebService(url, "Add", args);
    MessageBox.Show(result.ToString()); // 顯示 3

核心心得

XFire 開發 Web Service 極簡單,但 services.xml 載入路徑問題(需置於 WEB-INF/classes/META-INF/xfire/)官方文件鮮少提及,耗時近一天排查。記錄此處助後人避坑。

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