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

Axis2 系列教程(三):使用 services.xml 發布帶套件的 POJO 服務

     編輯:Java 相關知識

從零配置到 services.xml

Axis2 預設支援將無套件的 POJO 直接放入 WEB-INF/pojo 目錄發布(零配置)。但實際專案中類別通常歸屬於套件,此時需使用 services.xml 進行發布。

服務類範例

package service;

public class MyService {
    public String getGreeting(String name) {
        return "您好 " + name;
    }

    public void update(String data) {
        System.out.println("<" + data + ">已經更新");
    }
}

services.xml 基礎配置

建立 META-INF/services.xml:

<service name="myService">
    <description> Web Service例子 </description>
    <parameter name="ServiceClass"> service.MyService </parameter>
    <messageReceivers>
        <messageReceiver mep="https://www.w3.org/2004/08/wsdl/in-out"
                         class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
        <messageReceiver mep="https://www.w3.org/2004/08/wsdl/in-only"
                         class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
    </messageReceivers>
</service>
  • <service name>:服務名稱,對應 WSDL URL 中的 services/<name>。
  • ServiceClass:完整類別名稱(含套件)。
  • messageReceivers:根據方法是否有回傳值指定接收器(RPCMessageReceiver 處理 in-out,RPCInOnlyMessageReceiver 處理 in-only)。

打包部署

  1. 編譯類別,將 .class 檔置於對應套件目錄(如 D:\ws\service\MyService.class)。
  2. services.xml 置於 D:\ws\META-INF\services.xml。
  3. 在 D:\ws 目錄執行 jar cvf ws.aar . 生成 AAR 檔(實為 ZIP 格式)。
  4. 將 ws.aar 複製到 <Tomcat>\webapps\axis2\WEB-INF\services,重啟 Tomcat 即可生效。

進階:逐方法指定 MessageReceiver

<service name="myService">
    <description> Web Service例子 </description>
    <parameter name="ServiceClass"> service.MyService </parameter>
    <operation name="getGreeting">
        <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    </operation>
    <operation name="update">
        <messageReceiver class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
    </operation>
</service>

此方式生成的 WSDL 會將無回傳值方法的參數封裝於獨立類別中,但客戶端 Stub 相容性良好:服務端切換配置方式不影響現有客戶端調用。

發布多個服務:serviceGroup

<serviceGroup>
    <service name="myService"> ... </service>
    <service name="myService1">
        <parameter name="ServiceClass"> service.MyService1 </parameter>
        <messageReceivers> ... </messageReceivers>
    </service>
</serviceGroup>

透過 <serviceGroup> 可在單一 AAR 中發布多個服務,共用類別路徑與資源。

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