在RAD7中為EJB創建Web Service
Posted on 2009-03-17 15:23 馬達+斯加 閱讀(1014) 評論(0) 編輯 收藏 所屬分類: Websphere Portal一、準備工作
因為本地測試服務器WAS6.0,所以先在RAD7中打開window>preferences>web services>Server and Runtime,在Server項選擇WebSphere v6.0 Server。
在Workspace中創建一個Websphere v6.0的本地服務器。
創建一個Enterprise Application Project項目:Weather,須包含一個EJB項目和一個dynamic web項目。WeatherWeb在創建之后保持空,專門提供Web Service。

接下來,為項目創建一個EJB。

為了簡化過程,只在WeatherEJB的EJB中寫了簡單的方法,例如:











然后,在WeatherEJB上點擊右鍵,選擇Prepare for Deployment。
二、從EJB生成Webservice
右鍵點擊WeatherEJBBean,選擇Webservices->Create Webservice。
因為是從Java到Webservice,在Web Service type中選擇Bottom up EJB Web Service。在Service implementation點擊Browse,選擇剛才創建的EJB。確保Configuration 中的項目正確后,其他選項保持默認,點擊Next。

之后一直按Next,出現Start server的按鈕,點擊Start。
如果在第一階段創建EAP的時候沒有創建dynamic web項目的話,在此過程中,RAD將會自動創建一個web項目。但是,這個web項目中并不會自帶ibm-web-bnd.xmi文件,這在本地環境下沒問題,當發布到有多個應用服務器的環境中時,就會遇到以下的錯誤提示:
ADMA0010E: A Validation error occurred in task Selecting virtual hosts for Web modules. A virtual host is not specified for Web module WeatherWeb with URI WeatherWeb.war,WEB-INF/web.xml."
本地服務器啟動以后,我們的EAR將會被自動發布,打開Console視圖,應該可以看到如下信息:
打開IE,輸入http://localhost:9080/WeatherWeb/services/WeatherEJB,如果Web Service成功發布,則可以看到如下信息:
{http://bean}WeatherEJB
Hi there, this is a Web service!
三、測試Web Service
RAD提供了多種途徑進行Web Service的測試。
1.使用Web Services Explorer測試
在Project Explorer視圖下,展開JSR-109 Web Services,右鍵點擊WeatherEJBService,選擇Test With Web Service Explorer。
之后,IE會打開一個新窗口,在Endpoints欄,新增一個項目:
http://localhost:9080/WeatherWeb/services/WeatherEJB
然后轉到左側的Navigator,展開WeatherEJBSoapBinding,就可以對EJB下的Method逐個進行測試了。

2.使用Test JSP 測試
Web Services Explorer無法對SOAP/JMS的web service進行測試,而通過生成Test JSP則可以。
同樣在WeatherEJBService上點擊右鍵,選擇Generate Client。
拖動左側滑塊調整Client Generation Level 到Test Client。
在Client Project項指定WeatherWeb,然后點Next。

然后選擇需要測試的方法。完成以后,在WeatherWeb下應該會自動生成一個sampleWeatherEJBProxy的目錄,右擊TestClient.jsp選擇Run As -> Run on Server,選擇我們的本地測試服務器。
TestClient.jsp上包含了Methods, Inputs, Results三個框架,便可以對Service逐個進行測試。其中setEndpoint()可以為本地測試選擇不同的Endpoint。需要注意的是,為方便測試,Web Service返回類型一定要實現toString(),否則在Result中只能看到類似itso.objects.Weather@61a607dc的結果。
3. Write a Java Client that uses the stubs
在前面的步驟中,已經利用RAD生成了一個Client。利用Stubs訪問Web Service變得非常簡單。在此用一個簡單的Servlet以測試:



























































參考資料:《WebSphere Version 6 Web Services Handbook Development and Deployment》