axis2創建web service

 

axis2 是新一代的web service開發工具,它會讓你的web service開發變得輕鬆,快捷。下面讓我們以一個實際的例子來體驗一下。

首先,工欲善其事,必先利其器。就讓我們先做好一些必備的準備工作吧。

 

1.下載axis2 的2進制的包和war,現在的最新版本是1.4.1 發佈時間是2008-8-25

地址分別是:http://apache.mirror.phpchina.com/ws/axis2/1_4_1/axis2-1.4.1-bin.zip

                  http://apache.mirror.phpchina.com/ws/axis2/1_4_1/axis2-1.4.1-war.zip

 

2.把下載後的war放入tomcat的webapps目錄裏,然後啓動tomcat,這樣war包就會自動解壓爲目錄axis2

在瀏覽器中輸入http://localhost:8080/axis2/ ,如果一切正常你會看到下面的畫面

 




 
 3,就開始準備一下axis2的eclispe的插件了。axis2的eclispe插件分爲2個,一個是幫助我們生成aar文件的,另一個是幫我們用wsdl文件生成stub代碼的。

下載地址是

http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_4_1/axis2-eclipse-service-archiver-wizard.zip

 

http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_4_1/axis2-eclipse-codegen-wizard.zip

下載完2個壓縮文件後,可以直接把解壓後的文件拷貝到plugins目錄中,也可以在links目錄中寫文件路徑的方式來安裝插件,安裝完插件後,打開eclipse,在package explorer 中點擊右鍵--->選擇new---->other

如果安裝正確你會看到



 這樣準備工作就都做好了。接下來就是正式開發了。

 

工具都已經準備齊全了。我們來動手做一個小例子來小試牛刀!

這一節我們先利用axis2來發佈一個web service 的服務,然後在下一節我們做一客戶端來調用這個服務。

我們的服務很簡單的,就是輸入一個字符串,然後打印出一段字符串。

代碼很簡單,主要是測試用。

 

Java代碼 複製代碼
  1. package com.deltaj.server;   
  2.   
  3. public class SimpleServer {   
  4.   
  5.     /**  
  6.      * 簡單的測試方法  
  7.      *   
  8.      */  
  9.     public String simpleMethod(String name) {   
  10.         return name + "Say this is a Simple method ^-^";   
  11.     }   
  12.   
  13. }  
package com.deltaj.server;

public class SimpleServer {

	/**
	 * 簡單的測試方法
	 * 
	 */
	public String simpleMethod(String name) {
		return name + "Say this is a Simple method ^-^";
	}

}

 

主要的過程就是如何利用axis2的eclispe插件來發布這個服務啦。

 

1。在eclispe 的package Explorer 中點擊右鍵,在菜單中選擇新建--->other...----->Axis2 Service Archiver

 

2.然後點擊next進入了類選擇頁面,在這個頁面中的Class File Location選擇框中選擇類所在的文件夾。 


 3.點擊next之後進入了選擇 wsdl文件,這裏我們選擇skip wsdl。

 

 

4. 點擊next之後,進入的是選擇jar文件的頁面,這裏我們沒有外部的jar,所以點擊next直接跳過這個頁面。


 4.點擊next之後,進入的是選擇xml頁面,這裏我們選擇的是自動生成xml,也就是勾選

Generate the service xml automatically這一項


 5.點擊next之後,進入的是生成xml文件的頁面,在service name 裏填寫這個服務所起的名字,這裏我起名爲simpleServer,然後在class name 中填寫要發佈的類,這裏一定要寫全路徑,寫好後就可以點擊load 按鈕,

如果一切ok的話,你會看到如下畫面


 6 點擊next 後,進入的是輸出artiver文件的頁面,先要在output File location 中選擇要輸出的路徑,

   在output  File Name中輸入artiver文件的名稱。我起的名字是simpleServer


 7.點擊finish ,如果看到如下的畫面,恭喜你,服務發佈成功啦。

 

8.接下來,我們就可以把這個aar文件放入tomcat中發佈,首先把生成的aar文件拷貝到tomcat目錄中的axis2項目的service目錄中位置如圖。



 

9.接下來啓動tomcat,在地址欄中輸入http://localhost:8080/axis2 ,你會看到axis2的歡迎畫面

 

 

10.點擊Service連接,你會看到發佈的服務列表。這裏面就能看到我們發佈的simpleService


 11.點擊我們的服務simpleServer的連接,我們會看到。至此,服務發佈成功。

 
 

 

 

  這節我們就來寫一個客戶端來調用一下這個服務。主要關注一下如何用elispe的axis2的插件來生成stub代碼。

1.在eclispe 的package Explorer 中點擊右鍵,在菜單中選擇新建--->other...----->Axis2 Code Generator




 

2.點擊next,進入下一個頁面,選擇從wsdl文件來產生java文件。

 

3. 點擊next,然後選擇wsdl文件,注意此處要填寫上一節我們

 4.點擊next,進入設置頁面,這裏我們就用默認的設置。

 

5. 點擊next,選擇輸出文件的路徑。

 

6.點擊next,如果看到這個頁面,恭喜你已經生成代碼成功。

 

7.在package Explorer中刷新一下項目,然後你發現出現2個新的文件SimpleServerStub和SimpleServerCallbackHandler 。打開SimpleServerStub你會驚喜的發現。著名的小紅叉一個接一個的

這是因爲沒有axis2的類包。我們可以在下載的axis2-1.4.1-bin中找到lib包,把其中的jar都加入我們的工程中。

然後重新編譯一下工程,這時我們發現SimpleServerStub還是有幾個小紅叉。這個是因爲這個插件有個小bug。

生成的代碼沒有實現序列化方法。我們可以自己來加上,在小紅叉上點一下,彈出一個小菜單,選擇

Add unimplemented methods .



 

8.

Java代碼 複製代碼
  1. /**  
  2.  * 調用發佈的服務。  
  3.  *   
  4.  */  
  5. public class SimpleClient {   
  6.     
  7.  public static void main(String[] args) throws Exception{   
  8.      
  9.   //初始化樁文件   
  10.   SimpleServerStub stub = new SimpleServerStub();   
  11.   //初始化SimpleMethod方法。   
  12.   SimpleServerStub.SimpleMethod request = new  SimpleServerStub.SimpleMethod();   
  13.   //調用simpleMethod的setName方法。   
  14.   request.setName("zt");   
  15.   //   
  16.   System.out.println(stub.simpleMethod(request).get_return());   
  17.      
  18.      
  19.  }   
  20. }  
/**
 * 調用發佈的服務。
 * 
 */
public class SimpleClient {
 
 public static void main(String[] args) throws Exception{
  
  //初始化樁文件
  SimpleServerStub stub = new SimpleServerStub();
  //初始化SimpleMethod方法。
  SimpleServerStub.SimpleMethod request = new  SimpleServerStub.SimpleMethod();
  //調用simpleMethod的setName方法。
  request.setName("zt");
  //
  System.out.println(stub.simpleMethod(request).get_return());
  
  
 }
}

   如果一切正常,你就會看到結果

log4j:WARN No appenders could be found for logger (org.apache.axis2.description.AxisService).
log4j:WARN Please initialize the log4j system properly.
ztSay this is a Simple method ^-^。

調用服務成功。這是個簡單的例子,下節我們再做一個複雜一點的例子,來更好的學習axis2

 

 

   上節我們做了一個簡單的例子,調用的服務裏的方法只是簡單返回一個字符串,這次我們要做一個複雜點的例子,調用服務裏的方法返回一個java Bean對象。

      

       1. 首先做一個簡單的java bean ,代碼如下

Java代碼 複製代碼
  1. package com.deltaj.server;   
  2.   
  3. public class Persion {   
  4.     // 姓名   
  5.     private String name;   
  6.     // 年齡   
  7.     private int age;   
  8.   
  9.     public String getName() {   
  10.         return name;   
  11.     }   
  12.   
  13.     public void setName(String name) {   
  14.         this.name = name;   
  15.     }   
  16.   
  17.     public int getAge() {   
  18.         return age;   
  19.     }   
  20.   
  21.     public void setAge(int age) {   
  22.         this.age = age;   
  23.     }   
  24.   
  25. }  
package com.deltaj.server;

public class Persion {
	// 姓名
	private String name;
	// 年齡
	private int age;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

}

 

 

2.做一個服務,裏面只發佈一個方面,這個方法返回這個bean。

Java代碼 複製代碼
  1. package com.deltaj.server;   
  2.   
  3. public class BeanServer {   
  4.   
  5.     /**  
  6.      * 簡單的測試方法  
  7.      *   
  8.      */  
  9.     public Persion testMethod(String name, int age) {   
  10.         Persion persion = new Persion();   
  11.         persion.setName(name);   
  12.         persion.setAge(age);   
  13.         return persion;   
  14.     }   
  15. }  
package com.deltaj.server;

public class BeanServer {

	/**
	 * 簡單的測試方法
	 * 
	 */
	public Persion testMethod(String name, int age) {
		Persion persion = new Persion();
		persion.setName(name);
		persion.setAge(age);
		return persion;
	}
}

 3.按照第二節的做法,把這個服務發佈出來。

  4.同樣按照第三節的方法,用這個wsdl來生成stub代碼。

  5.然後我們開始做一個方法來調用一下這個服務。

Java代碼 複製代碼
  1. package com.deltaj.client;   
  2.   
  3. import com.deltaj.server.TestServerStub;   
  4.   
  5. public class BeanClient {   
  6.     public static void main(String[] args) throws Exception{   
  7.         // 初始化樁文件   
  8.         TestServerStub stub = new TestServerStub();   
  9.         // 初始化TestMethod方法。   
  10.         TestServerStub.TestMethod request = new TestServerStub.TestMethod();   
  11.         // 設置bean的屬性值。   
  12.         request.setName("delta ");   
  13.         request.setAge(20);   
  14.         //      
  15.         System.out.println("The name is:"+stub.testMethod(request).get_return().getName());   
  16.         System.out.println("The age is:"+stub.testMethod(request).get_return().getAge());   
  17.     }   
  18.   
  19. }  
package com.deltaj.client;

import com.deltaj.server.TestServerStub;

public class BeanClient {
	public static void main(String[] args) throws Exception{
		// 初始化樁文件
		TestServerStub stub = new TestServerStub();
		// 初始化TestMethod方法。
		TestServerStub.TestMethod request = new TestServerStub.TestMethod();
		// 設置bean的屬性值。
		request.setName("delta ");
		request.setAge(20);
		//   
		System.out.println("The name is:"+stub.testMethod(request).get_return().getName());
		System.out.println("The age is:"+stub.testMethod(request).get_return().getAge());
	}

}

 

6.如果按照這裏說的做的話,你會看到

log4j:WARN No appenders could be found for logger (org.apache.axis2.description.AxisService).
log4j:WARN Please initialize the log4j system properly.
The name is:delta
The age is:20

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章