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

Axis 1.x開發Web Service實戰:從WSDL到Stub的完整流程

     編輯:Java 程式設計入門

Axis是經典Web Service框架,支持Stubs模式(靜態代理)開發。本文記錄Axis 1.x在Tomcat 5+Eclipse環境下的完整部署調試流程。

環境準備

  • J2SE SDK 1.4
  • Tomcat 5.0
  • Eclipse 3.2
  • Axis安裝包(xml.apache.org)

將Axis相關jar放入WEB-INF/lib,可選包activation.jar、mail.jar、xmlsec.jar同目錄。

服務端開發

1. 業務實現類

package server;
public class SayHello {
    public String getName(String name) {
        return "hello " + name;
    }
}

2. 部署描述符 deploy.wsdd

<deployment xmlns="https://xml.apache.org/axis/wsdd/" xmlns:java="https://xml.apache.org/axis/wsdd/providers/java">
  <service name="SayHello" provider="java:RPC" style="wrapped" use="literal">
    <parameter name="className" value="server.SayHello"/>
    <parameter name="allowedMethods" value="*"/>
  </service>
</deployment>

3. 發布腳本 deploy.bat

set Axis_Lib=D:\workspace\test\WEB-INF\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Axis_Servlet=https://localhost:8080/test/servlet/AxisServlet
%Java_Cmd% org.apache.axis.client.AdminClient -l %Axis_Servlet% deploy.wsdd

執行後訪問https://localhost:8080/test/services查看服務列表。

客戶端生成與調用

1. 獲取WSDL

瀏覽器訪問https://localhost:8080/test/services/SayHello?wsdl下載SayHello.wsdl。

2. 生成Stub腳本 WSDL2Java.bat

set Axis_Lib=D:\workspace\test\WEB-INF\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=D:\workspace\test\src
set Package=server
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o %Output_Path% -p %Package% SayHello.wsdl

生成四個文件:

  • SayHello.java (SEI接口)
  • SayHelloService.java (Service工廠)
  • SayHelloServiceLocator.java (定位器)
  • SayHelloSoapBindingStub.java (Stub實現)

3. 客戶端調用代碼

public class TestWSClient {
    public static void main(String[] args) throws Exception {
        SayHelloService service = new SayHelloServiceLocator();
        SayHello_PortType client = service.getSayHello();
        String result = client.getName("clientname");
        System.out.println(result);  // 輸出: hello clientname
    }
}

JUnit集成測試

public class TestWSClient extends TestCase {
    public void testSayHello() throws Exception {
        SayHelloService service = new SayHelloServiceLocator();
        SayHello_PortType client = service.getSayHello();
        assertEquals("hello clientname", client.getName("clientname"));
    }
}

注意事項

  • Axis 1.x屬於第一代Web Service棧,新項目建議用CXF/JAX-WS (Metro)
  • Stubs模式優於DII/Dynamic Proxy:類型安全、IDE提示、性能較好
  • 複雜類型需在WSDD中聲明typeMapping
  • 生產環境建議啟用WS-Security、採用文檔風格
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved