環境準備
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項:
圖1. eclipse建立檔案向導對話框
服務端開發
1、部署Axis2
首先,解壓axis2-1.6.2-war.zip得到axis2.war,并放到%tomcat%\webapps目錄下;
然後,啟動tomcat,并通路:http://localhost:8080/axis2
若顯示如下頁面,則表示axis2 war包部署成功。
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所需要定義的服務名、類名等參數:
其中,Service name,填寫服務名;Class name,填寫服務代碼中定義的類全名。
在方法清單中勾選聲明的方法,若清單未顯示,可以點選Load按鈕自動加載。
接下來,填寫輸出aar檔案的路徑、名稱。
最後,提示:服務壓縮包aar檔案生成成功。
檢視指定檔案夾,發現已經生成了myservice.aar檔案。
4、釋出服務
将myservice.aar檔案放到之前部署的axis2應用的WEB-INF\services\目錄下,
重新開機tomcat,即完成了服務釋出。釋出成功後,頁面顯示如下:
點選上圖的MyService連結(http://localhost:8080/axis2/services/MyService?wsdl),可看到wsdl内容。
至此,即完成了服務端的開發。
用戶端開發
1、生成用戶端代碼
通過Axis2插件,可自動生成用戶端代碼。
在Eclipse new file wizard菜單(見圖1),選擇Axis2 Code Generator,然後點選Next。
勾選第一個,從wsdl檔案生成java source code。在下圖wsdl file location中,輸入已經釋出成功的服務端webservice位址。
設定代碼生成器的可選項,此處預設default即可。
設定代碼生成後的路徑。勾選第一項,并選擇目前eclipse workspace中的工程wsclient(這是提前建立好的一個測試用project)。
點選完成,即開始代碼生成過程。
生成完畢後,重新整理wsclient工程,可以看到:
配置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