本篇文章主要是『教導(協助笨鳥記憶)』如何利用 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)
2. 填入「專案名稱」,並選擇要執行的 Server 與 J2EE 版本之後,按下 Finish 完成建立 Dynamic Web project 的動作。
本例中,Project name 為「AxisTeach」。
3. 完成上述步驟後,可以在 Eclipse 左方的 Project Explorer 中看到建立出來的 Dynamic Web Project
4. 接下來,我們要建立一個 Java 檔來做 Web Service 。
在 Project Explorer 畫面中,點選 Java Resource 資料夾,按滑鼠右鍵,在跳出來的選單裏依序選擇「New -> Class」
5. 在跳出來的選單內填好 Package 與 Name 之後按下 Finish 鈕,就完成新增一個 Java 檔的動作。
本例中,Package 為「teach.axis」,Name 為「AxisWS1」。
6. 我們一樣可以在 Eclipse 左邊的 Project Explorer 裏看到剛剛建立出來的 Java 檔。
7. 接著,在 Project Explorer 視窗中點擊兩次剛建立的 Java 檔來開啟編輯視窗。
然後在裏面寫上兩個 public 的方法,分別來測試輸入與輸出。
以下為例,receive() 方法會從呼叫端傳入一個參數,並將該參數秀在 Console 上
用來測試輸入的情況;而 send() 方法則為回傳一個字串給呼叫端,用來測試輸出的情況。
8. 編寫好程式碼之後,在 Project Explorer 視窗上點選 java 檔,並按下滑鼠右鍵叫出選單,
並依序點選「Web Services -> Create Web Service」
9. 此時會跳出建立 Web Service 的操作視窗。
基本上這個視窗不怎麼需要修改裏面的參數,不過如果想要改變部署的 Server 或是改用 AXIS2,
則可以分別點擊 Configuration 區塊裏的 Server 與 Web service runtime (即下圖紅圈圈起來處)
連結,點擊後會跳出修改視窗讓使用者修改。
以上都設定完畢後,按下 Next 按鈕到下一步。
10. 在接下來的視窗中,會列出此 Java 檔中所有 public 的方法,供使用者決定要將那些方法發佈成 Web Service。
在下例中,我們將剛寫好的 receive() 與 send() 兩個方法皆勾選起來,在按下「Next」建行下一步。
11. 部署 Web Service 需要 Server 是開啟的狀態,因此若 Server 尚會開啟,則會出現請你
開啟 Server 的選單。此時按下該選單上的「Start server」按鈕,之後 Server 就啟動了。
12. 成功開啟 Server 後,Start server 按鈕會變成 disable 的狀態,接下來按下 Next 鈕,
開始進行部署/註冊 Web Service。
13. 最後一個畫面會問你是否要開啟 Web Service Explorer 來測試剛部署好的 Web Service。
此處我們先不勾選,按下 Finish 完成。
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 檔。
15. 接著打開 web.xml 檔,可以看到 Eclipse 幫我們在其中加入了與 AXIS 有關的設定。
16. 最後,打開瀏覽器,輸入 http://your IP : port/your project name/services,以此範例為
http://localhost:8080/AxisTeach/services。若出現該 Server 上部署中的 Web Service 清單
(如下圖) 且剛部署的 Web Service 有在其內的話,則代表成功。
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 鈕。
18. 若是順利連結成功的話,則會在 Navigator 裏看到此 Web Service 開放出來的方法,同樣的,在右邊的視窗同樣
能看到這些開放出來的方法。
19. 先來測試此範例中的 send 方法吧。
點擊 Navigator 視窗內的 send 方法,此時右邊視窗會變成如下圖一般,因為 send 方法只會回傳字串而且
不需輸入參數,因此只要按下「Go」鈕即可。之後,在下方畫面可以看到 send 方法丟回來的字串。
20. 最後來測試這個範例中的 receive 方法。
同樣點擊 Navigator 視窗內的 receive 方法,此時右邊畫面(如下圖)會跟剛才的 send 方法不同,那是因為
receive 方法需要輸入參數,因此在這畫面裏會出現輸入框讓你輸入參數。
我們在輸入完字串後按下「Go」鈕開始執行,因為 receive 方法會將呼叫者傳入的參數 output 到 Console
(程式碼請看步驟 7),因此我們可以看到 Console 印出了我們剛剛 key 入的字串。
如何手動部署與卸載 Web Service
由於以上介紹的步驟皆由 Eclipse 幫我們將 Web Service 製作好並部署上去,若我們只要單純的部署與卸載 Web Service
時,在 Eclipse 上又該如何執行呢?
首先,我們必須要先準備好部署與卸載的 wsdd 檔,若是透過 Eclipse 來產生 Web Service,則可在 WEB-INF 目錄中
名為「Java name + "Service"」的子目錄中找到 (詳見上述的步驟 14)。
下圖為 Eclipse 產生的 deploy.wsdd 檔內容
下圖為 Eclipse 產生的 undeploy.wsdd 檔內容
有了 wsdd 檔之後,我們要新增一個 Eclipse 的執行設定檔,透過 axis.jar 中的 org.apache.axis.client.AdminClient
類別來執行 wsdd 檔。
A. 點選 Eclipse 的工具列上的 Run 指令旁的小箭,會開啟一個小選單,點擊「Run Configurations...」。
B. 在開啟的 Run Configurations 視窗中,點選左邊樹狀目錄的「Java Application」後,按滑鼠右鍵跳出子選單
,在子選單上點擊「New」。
C. 此時視窗右邊的畫面會變成如下圖的輸入畫面。
在 Name 欄位輸入此 Run Configuration 的名字,此範例命名為「RunAxisWsdd」。
然後,在點擊此視窗中間名為「Main」的 Tab,接著在 Main Tab 的畫面中輸入 Project 欄位 (此範例為 AxisTeach)
與要執行的 Class 全名,因為我們要靠 axis.jar 中的 org.apache.axis.client.AdminClient 類別來執行 wsdd 檔,
所以此處填入「apache.axis.client.AdminClient」。
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」鈕完成設定。
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>」字串。
D. 成功執行後,打開瀏覽器輸入 http://your IP : port/your project name/services
(此例中為 http://localhost:8080/AxisTeach/services) 來查看 Web Service 清單,
然後我們可以看到此範例的 AxisWS1 已不在清單中了。
F. 接下來我們在用同樣的方法來執行 deploy.wsdd 檔,將 AxisWS1 這個 Web Service 重新部署上去。
執行成功後同樣可以在 Console 上看到 <Admin>Done processing</Admin> 字串。
G. 最後再進入 Web Service 清單,這時可以看到 AxisWS1 又出現在清單中了。
參考文件:
.在 axis 中通过 wsdd 文件发布和卸载 webservice
.使用 Apache Axis 部署 Web 服务时的常见问题及解决方法
留言列表