本篇文章主要是『教導(協助笨鳥記憶)』如何利用 Eclipse 簡單的製作出一個基於 AXIS 的 Web Service 程式。

執行環境
.Eclipse 3.5.1
.JDK 1.5.0.15
.Tomcat 5.5.26

執行步驟
1. 建立一個  Dynamic Web Project ( File -> New -> Dynamic Web Project)

Easy_Step01.jpg    

2. 填入「專案名稱」,並選擇要執行的 Server 與 J2EE 版本之後,按下 Finish 完成建立 Dynamic Web project 的動作。
本例中,Project name 為「AxisTeach」。

Easy_Step02.jpg  

3. 完成上述步驟後,可以在 Eclipse 左方的 Project Explorer 中看到建立出來的 Dynamic Web Project

Easy_Step03.jpg 

4. 接下來,我們要建立一個 Java 檔來做 Web Service 。
在 Project Explorer 畫面中,點選 Java Resource 資料夾,按滑鼠右鍵,在跳出來的選單裏依序選擇「New -> Class」 

Easy_Step04.jpg 

5. 在跳出來的選單內填好 Package 與 Name 之後按下 Finish 鈕,就完成新增一個 Java 檔的動作。
本例中,Package 為「teach.axis」,Name 為「AxisWS1」。

Easy_Step05.jpg 

6. 我們一樣可以在 Eclipse 左邊的 Project Explorer 裏看到剛剛建立出來的 Java 檔。

Easy_Step06.jpg  

7. 接著,在 Project Explorer 視窗中點擊兩次剛建立的 Java 檔來開啟編輯視窗。
然後在裏面寫上兩個 public 的方法,分別來測試輸入與輸出。
以下為例,receive() 方法會從呼叫端傳入一個參數,並將該參數秀在 Console 上
用來測試輸入的情況;而 send() 方法則為回傳一個字串給呼叫端,用來測試輸出的情況。

Easy_Step07.jpg  

8. 編寫好程式碼之後,在 Project Explorer 視窗上點選 java 檔,並按下滑鼠右鍵叫出選單,
並依序點選「Web Services -> Create Web Service」

Easy_Step08.jpg  

9. 此時會跳出建立 Web Service 的操作視窗。
基本上這個視窗不怎麼需要修改裏面的參數,不過如果想要改變部署的 Server 或是改用 AXIS2,
則可以分別點擊 Configuration 區塊裏的 Server 與 Web service runtime (即下圖紅圈圈起來處)
連結,點擊後會跳出修改視窗讓使用者修改。
以上都設定完畢後,按下 Next 按鈕到下一步。

Easy_Step09.jpg 

10. 在接下來的視窗中,會列出此 Java 檔中所有 public 的方法,供使用者決定要將那些方法發佈成 Web Service。
在下例中,我們將剛寫好的 receive() 與 send() 兩個方法皆勾選起來,在按下「Next」建行下一步。

Easy_Step10.jpg  

11. 部署 Web Service 需要 Server 是開啟的狀態,因此若 Server 尚會開啟,則會出現請你
開啟 Server 的選單。此時按下該選單上的「Start server」按鈕,之後 Server 就啟動了。

Easy_Step11.jpg  

12. 成功開啟 Server 後,Start server 按鈕會變成 disable 的狀態,接下來按下 Next 鈕,
開始進行部署/註冊 Web Service。

Easy_Step12.jpg  

13. 最後一個畫面會問你是否要開啟 Web Service Explorer 來測試剛部署好的 Web Service。
此處我們先不勾選,按下 Finish 完成。

Easy_Step13.jpg  

14. 完成上述步驟後,我們可以在 Project Explore 視窗中看到在 WEB-INF 目錄中多了一個放置部署與卸載
Web Service 的 wsdd 指令檔的目錄,此目錄以 Java Name + Service 為名 (以上述的例子為 AxisWS1Service) 。
然後同樣在 WEB-INF 目錄中多了一個 server-config.wsdd 檔。 

接著,我們打開 WEB-INF 目錄下的 lib 目錄,發現 Eclipse 已經幫我們在裏面多加了一些 Axis 需使用到的 jar 檔。
最後,我們還可以發現在 WebContent 目錄中也多了一個 wsdl 目錄,並在該目錄內存放著 wsdl 檔。

Easy_Step14.jpg    

15. 接著打開 web.xml 檔,可以看到 Eclipse 幫我們在其中加入了與 AXIS 有關的設定。

Easy_Step15.jpg  

16. 最後,打開瀏覽器,輸入 http://your IP : port/your project name/services,以此範例為
http://localhost:8080/AxisTeach/services。若出現該 Server 上部署中的 Web Service 清單
(如下圖) 且剛部署的 Web Service 有在其內的話,則代表成功。

Easy_Step16.jpg

17. 接下來我們開啟 Web Service Explorer 來測試一下吧
點擊 Eclipse 工具列中的 Web Service Explorer 圖示, 並在開啟的 Web Service Explorer 視窗擊右上方的
WSDL Page 按鈕,將視窗切換到 WSDL。接著在右邊的 WSDL URL 輸入框內輸入要進行測試的 wsdl 的 url,
以此為例為「http://localhost:8080/AxisTeach/services/AxisWS1?wsdl」,之後按下 Go 鈕。

Easy_Step17.jpg  

18. 若是順利連結成功的話,則會在 Navigator 裏看到此 Web Service 開放出來的方法,同樣的,在右邊的視窗同樣
能看到這些開放出來的方法。

Easy_Step18.jpg  

19. 先來測試此範例中的 send 方法吧。
點擊 Navigator 視窗內的 send 方法,此時右邊視窗會變成如下圖一般,因為 send 方法只會回傳字串而且
不需輸入參數,因此只要按下「Go」鈕即可。之後,在下方畫面可以看到 send 方法丟回來的字串。

Easy_Step19.jpg  

20. 最後來測試這個範例中的 receive 方法。
同樣點擊 Navigator 視窗內的 receive 方法,此時右邊畫面(如下圖)會跟剛才的 send 方法不同,那是因為
receive 方法需要輸入參數,因此在這畫面裏會出現輸入框讓你輸入參數。

我們在輸入完字串後按下「Go」鈕開始執行,因為 receive 方法會將呼叫者傳入的參數 output 到 Console
(程式碼請看步驟 7),因此我們可以看到 Console 印出了我們剛剛 key 入的字串。

Easy_Step20.jpg  

如何手動部署與卸載 Web Service
由於以上介紹的步驟皆由 Eclipse 幫我們將 Web Service 製作好並部署上去,若我們只要單純的部署與卸載 Web Service
時,在 Eclipse 上又該如何執行呢?

首先,我們必須要先準備好部署與卸載的 wsdd 檔,若是透過 Eclipse 來產生 Web Service,則可在 WEB-INF 目錄中
名為「Java name + "Service"」的子目錄中找到 (詳見上述的步驟 14)。

下圖為 Eclipse 產生的 deploy.wsdd 檔內容

wsdd01-deploy.jpg 

下圖為 Eclipse 產生的 undeploy.wsdd 檔內容

wsdd02-undeploy.jpg


有了 wsdd 檔之後,我們要新增一個 Eclipse 的執行設定檔,透過 axis.jar 中的 org.apache.axis.client.AdminClient
類別來執行 wsdd 檔。 

A. 點選 Eclipse 的工具列上的 Run 指令旁的小箭,會開啟一個小選單,點擊「Run Configurations...」。

AddRunC_Step01.jpg  

B. 在開啟的 Run Configurations 視窗中,點選左邊樹狀目錄的「Java Application」後,按滑鼠右鍵跳出子選單
,在子選單上點擊「New」。

AddRunC_Step02.jpg  

C. 此時視窗右邊的畫面會變成如下圖的輸入畫面。
在 Name 欄位輸入此 Run Configuration 的名字,此範例命名為「RunAxisWsdd」。
然後,在點擊此視窗中間名為「Main」的 Tab,接著在 Main Tab 的畫面中輸入 Project 欄位 (此範例為 AxisTeach)
與要執行的 Class 全名,因為我們要靠 axis.jar 中的 org.apache.axis.client.AdminClient 類別來執行 wsdd 檔,
所以此處填入「apache.axis.client.AdminClient」。

AddRunC_Step03.jpg

D. 因為 AdminClient 在執行時需要傳入參數,因此我們需點擊 Arguments Tab,將畫面切換到執行參數輸入畫面。

由於 AdminClient 類別會使用 soap 協定與 Axis Web Service Server上預設的 AdminService
(AdminService 是在經過先前介紹的方式產生 Web Service 時就會預設產生出來的一個 Web Service)
,因此參數必需傳入此 Service 的位置,在隔一個空格之後,再跟上要執行的 wsdd 檔。指令如下:

org.apache.axis.client.AdminClient -lhttp://your IP : port/your project name/services/AdminService wsdd檔

例:
org.apache.axis.client.AdminClient -lhttp://localhost:8080/AxisTeach/services/AdminService deploy.wsdd

了解要傳入什麼參數之後,接下來我們在「Program arguments」輸入框中輸入:
-lhttp://localhost:8080/AxisTeach/services/AdminService {selected_resource_loc}
其中的 {selected_resource_loc} 是 Eclipse 的預設環境變數,在執行時會將使用者所選擇到的檔案路徑與名稱代入。

設定完成之後,按下「Apply」鈕後,再按下「Close」鈕完成設定。

AddRunC_Step04.jpg

E. 完成上述的設定後,接著來試著執行看看。
首先,由於經過先前建立 Web Service 的步驟之後,現在 Server 上已經有 Web Service 在執行了,
因此我們在這裏先試著執行卸載 Web Service 的 wsdd 檔。

點選 Project Explorer 視窗裏的 undeploy.wsdd 之後,開啟 Eclipse 工具列上的「Run」的小選單,
在其內我們可以看到剛剛建立出來的 Run Configuration (此例中為 RunAxisWsdd),然後點擊這個
Run Configuration 來執行指令。如果順利執行完畢的話,在 Console 視窗可以看到 AdminClinet 類別
丟出「<Admin>Done processing</Admin>」字串。 

AddRunC_Step05.jpg 

D. 成功執行後,打開瀏覽器輸入 http://your IP : port/your project name/services
(此例中為 http://localhost:8080/AxisTeach/services) 來查看 Web Service 清單,
然後我們可以看到此範例的 AxisWS1 已不在清單中了。

AddRunC_Step06.jpg  

F. 接下來我們在用同樣的方法來執行 deploy.wsdd 檔,將 AxisWS1 這個 Web Service 重新部署上去。
執行成功後同樣可以在 Console 上看到 <Admin>Done processing</Admin> 字串。

AddRunC_Step07.jpg 

G. 最後再進入 Web Service 清單,這時可以看到 AxisWS1 又出現在清單中了。

AddRunC_Step08.jpg  

參考文件:
.在 axis 中通过 wsdd 文件发布和卸载 webservice
.使用 Apache Axis 部署 Web 服务时的常见问题及解决方法

文章標籤
全站熱搜
創作者介紹
創作者 大笨鳥 的頭像
大笨鳥

大笨鳥的私房菜

大笨鳥 發表在 痞客邦 留言(0) 人氣(15,304)