天天看點

Eclipse + Axis2 開發 WebService

環境準備

1、本地環境

win7+eclipse(Luna)+jdk1.6+tomcat6

2、下載下傳Axis2相關軟體包

3、安裝eclipse插件

将如下兩個zip檔案解壓後得到的jar檔案放到eclipse安裝主目錄下的plugins子目錄下,并重新開機eclipse即可。

  • axis2-eclipse-codegen-plugin-1.6.2.zip,用來将服務代碼生成wsdl檔案以及解析将wsdl檔案生成用戶端代碼;
  • axis2-eclipse-service-plugin-1.6.2.zip,用來将服務代碼打包成字尾名為.aar檔案。

安裝成功,在建立視窗(Ctrl+N)可以看到如下Axis2 Wizards項:

Eclipse + Axis2 開發 WebService

圖1. eclipse建立檔案向導對話框

服務端開發

1、部署Axis2

首先,解壓axis2-1.6.2-war.zip得到axis2.war,并放到%tomcat%\webapps目錄下;

然後,啟動tomcat,并通路:http://localhost:8080/axis2

若顯示如下頁面,則表示axis2 war包部署成功。

Eclipse + Axis2 開發 WebService

2、編寫服務端代碼

package wstest;

public class MyService {

    /** 
    * Greeting Service
    * @return String
    */
    public String greeting(String name){
        return "Welcome, "+name;
    }   
}
           

3、制作aar包

在Eclipse new file wizard菜單(見圖1),選擇Axis2 Service Archiver,然後點選Next。

接下來,依次填寫Class檔案位置、Skip WSDL、選擇服務依賴的外部jar包(本案例無需外部依賴Jar)、勾選自動生成service xml,然後在如下頁面選擇該xml所需要定義的服務名、類名等參數:

Eclipse + Axis2 開發 WebService

其中,Service name,填寫服務名;Class name,填寫服務代碼中定義的類全名。

在方法清單中勾選聲明的方法,若清單未顯示,可以點選Load按鈕自動加載。

接下來,填寫輸出aar檔案的路徑、名稱。

Eclipse + Axis2 開發 WebService

最後,提示:服務壓縮包aar檔案生成成功。

Eclipse + Axis2 開發 WebService

檢視指定檔案夾,發現已經生成了myservice.aar檔案。

4、釋出服務

将myservice.aar檔案放到之前部署的axis2應用的WEB-INF\services\目錄下,

Eclipse + Axis2 開發 WebService

重新開機tomcat,即完成了服務釋出。釋出成功後,頁面顯示如下:

Eclipse + Axis2 開發 WebService

點選上圖的MyService連結(http://localhost:8080/axis2/services/MyService?wsdl),可看到wsdl内容。

至此,即完成了服務端的開發。

用戶端開發

1、生成用戶端代碼

通過Axis2插件,可自動生成用戶端代碼。

在Eclipse new file wizard菜單(見圖1),選擇Axis2 Code Generator,然後點選Next。

Eclipse + Axis2 開發 WebService

勾選第一個,從wsdl檔案生成java source code。在下圖wsdl file location中,輸入已經釋出成功的服務端webservice位址。

Eclipse + Axis2 開發 WebService

設定代碼生成器的可選項,此處預設default即可。

Eclipse + Axis2 開發 WebService

設定代碼生成後的路徑。勾選第一項,并選擇目前eclipse workspace中的工程wsclient(這是提前建立好的一個測試用project)。

Eclipse + Axis2 開發 WebService

點選完成,即開始代碼生成過程。

Eclipse + Axis2 開發 WebService

生成完畢後,重新整理wsclient工程,可以看到:

Eclipse + Axis2 開發 WebService

配置buildpath,之前下載下傳的axis2-1.6.2-bin.zip檔案中lib目錄下的所有Jar包,都添加到class path中。配置完畢後,工程即編譯成功。

2、編寫測試代碼調用web服務

package test;

import java.rmi.RemoteException;
import wstest.*;

public class TestWS {

    public static void main(String[] args) throws RemoteException {

        MyService ws = new MyServiceStub();

        Greeting greeting = new Greeting();
        greeting.setName("Simon");

        //調用WebService
        GreetingResponse greetingResponse = ws.greeting(greeting);

        System.out.println(greetingResponse.get_return());
    }
}
           

輸出内容:

Welcome, Simon

至此,WebService用戶端調用成功。

問題記錄

1. eclipse編譯時jdk版本問題

報錯資訊:

Unsupported major.minor version 51.0

at java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)

原因:jdk版本問題,本地環境原來為win7 + jdk1.7,與tomcat運作時預設使用的jdk版本1.6不一緻。

解決辦法:修改項目java compiler的方法:在項目點右鍵->選擇Perperties->在出現的菜單中選擇Java Compiler->最上面選中Enable project Specific setting->然後将jdk改為jdk1.6即可。

參考文檔

Apache axis2 + Eclipse 開發 WebService