eclipse下webService環境搭建

axis2建立web service(一)php

                                                     做者:張濤 java

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

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

 

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

地址分別是: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.ziptomcat

 

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

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

 




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

下載地址是

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

若是安裝正確你會看到(下面的紅色圈圈裏未必就必定能看到這兩項,我用eclipse,有時顯示的是1個,有時顯示3個,總之讓人很鬱悶,後來我用了MyEclipse6.5來完成這個Demo的。



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


axis2建立web service(二)

WebTomcatXMLIDEA

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

這一節咱們先利用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. }  

 

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

 

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

 

2.而後點擊next進入了類選擇頁面,在這個頁面中的Class File Location選擇框中選擇類所在的文件夾。 (這裏填寫的主要是通過編譯後的java類,即java.class文件所存放位置的根目錄,好比myEclipse的目錄則是E:\YANGS\workspace\myservice\WebRoot\WEB-INF\classes,myservice是個人項目名,固然,我建立的是web project,若是是java project,請根據實際狀況填寫。寫這個路徑是爲了下面操做,來尋找java類


 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的話,你會看到以下畫面(這裏最多見的問題就是Class not found,通過測試,發現直接在src目錄下建立java類,是能夠Load到類方法的,可是隻要放在本身建立的包名下,就load不到,好比放在com.test包下面的類就load不到。


 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的鏈接,咱們會看到。至此,服務發佈成功。


axis2建立web service(三)

WebEclipselog4jMyeclipseXML

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

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




 

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

 

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

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

 

5. 點擊next,選擇輸出文件的路徑。(這裏點擊finish,MyEclipse6.5會報錯,An error ocurred while completing process
-java.lang.reflect.InvocationTargetException,解決辦法是:

1.關閉 Eclipse

2.copy  %AXIS2_HOME%\lib\ 下的
backport-util-concurrent-3.1.jar 和 geronimo-stax-api_1.0_spec-1.0.1.jar
複製到 MyEclipse 6.5\eclipse\plugins\Axis2_Codegen_Wizard_1.3.0\lib 文件夾下。

3.註冊此 jar 包: 
修改MyEclipse 6.5\eclipse\plugins\Axis2_Codegen_Wizard_1.3.0\plugin.xml 文件
在 <runtime> 內加入下面的字串 
    <library name="lib/geronimo-stax-api_1.0_spec-1.0.1.jar"> 
       <export name="*"/> 
   </library> 
    <library name="lib/backport-util-concurrent-3.1.jar"> 
          <export name="*"/> 
    </library>

到plugin.xml文件中,保存後從新啓動Eclipse便可。


- 若問題仍存在, 嘗試改變Eclipse 使用的 JRE, 換成 JAVA 6
- 使用 JRE 1.6 啓動 Eclipse 後, 若仍有問題, 試着加入 -clean 參數啓動 Eclipse, 清除 osig cache:
eclipse.exe -vm "c:\java\jre1.6.0_05\bin\java.exe" -clean -console -consoleLog -debug -vmargs -Xmx384M

- 關閉 Eclipse 後, 再以通常方式啓動 Eclipse, 應可解決問題





 

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

 

7.在package Explorer中刷新一下項目,而後你發現出現2個新的文件SimpleServerStub和SimpleServerCallbackHandler 。打開SimpleServerStub你會驚喜的發現。著名的小紅叉一個接一個的(報錯,是由於沒有引用jar包,最直接的方法是把axis2-1.4.1\lib目錄下全部的jar包都引用到項目中

這是由於沒有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. }  

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

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


axis2建立web service(四)

WebBeanlog4jEclipseQQ

      上節咱們作了一個簡單的例子,調用的服務裏的方法只是簡單返回一個字符串,此次咱們要作一個複雜點的例子,調用服務裏的方法返回一個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. }  

 

 

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. }  

 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. }  

 

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

祝你好運。:)

相關文章
相關標籤/搜索