posts - 84, comments - 54, trackbacks - 0, articles - 0
             :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
           

          一、準(zhǔn)備工作

          因為本地測試服務(wù)器WAS6.0,所以先在RAD7中打開window>preferences>web services>Server and Runtime,在Server項選擇WebSphere v6.0 Server

          Workspace中創(chuàng)建一個Websphere v6.0的本地服務(wù)器。

          創(chuàng)建一個Enterprise Application Project項目:Weather,須包含一個EJB項目和一個dynamic web項目。WeatherWeb在創(chuàng)建之后保持空,專門提供Web Service


          接下來,為項目創(chuàng)建一個EJB

          為了簡化過程,只在WeatherEJBEJB中寫了簡單的方法,例如:
              public String getInformation(){
                  
          return "WEATHER WEB SERVICE";
              }

              
              
          public int getTemperature(Calendar date) {
                  
          return 26;
              }

              
              
          public String getWind(Calendar date) {
                  
          return "SW";
              }
           

          然后,在WeatherEJB上點擊右鍵,選擇Prepare for Deployment

           

          二、EJB生成Webservice

          右鍵點擊WeatherEJBBean,選擇Webservices->Create Webservice

          因為是從JavaWebservice,在Web Service type中選擇Bottom up EJB Web Service。在Service implementation點擊Browse,選擇剛才創(chuàng)建的EJB。確保Configuration 中的項目正確后,其他選項保持默認(rèn),點擊Next




           

          之后一直按Next,出現(xiàn)Start server的按鈕,點擊Start

          如果在第一階段創(chuàng)建EAP的時候沒有創(chuàng)建dynamic web項目的話,在此過程中,RAD將會自動創(chuàng)建一個web項目。但是,這個web項目中并不會自帶ibm-web-bnd.xmi文件,這在本地環(huán)境下沒問題,當(dāng)發(fā)布到有多個應(yīng)用服務(wù)器的環(huán)境中時,就會遇到以下的錯誤提示:

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

          本地服務(wù)器啟動以后,我們的EAR將會被自動發(fā)布,打開Console視圖,應(yīng)該可以看到如下信息:



           

          打開IE,輸入http://localhost:9080/WeatherWeb/services/WeatherEJB,如果Web Service成功發(fā)布,則可以看到如下信息:

          {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

          然后轉(zhuǎn)到左側(cè)的Navigator,展開WeatherEJBSoapBinding,就可以對EJB下的Method逐個進行測試了。




           

          2.使用Test JSP 測試

          Web Services Explorer無法對SOAP/JMSweb service進行測試,而通過生成Test JSP則可以。

          同樣在WeatherEJBService上點擊右鍵,選擇Generate Client

          拖動左側(cè)滑塊調(diào)整Client Generation Level Test Client

          Client Project項指定WeatherWeb,然后點Next



           

          然后選擇需要測試的方法。完成以后,在WeatherWeb下應(yīng)該會自動生成一個sampleWeatherEJBProxy的目錄,右擊TestClient.jsp選擇Run As -> Run on Server,選擇我們的本地測試服務(wù)器。



           

          TestClient.jsp上包含了Methods, Inputs, Results三個框架,便可以對Service逐個進行測試。其中setEndpoint()可以為本地測試選擇不同的Endpoint。需要注意的是,為方便測試,Web Service返回類型一定要實現(xiàn)toString(),否則在Result中只能看到類似itso.objects.Weather@61a607dc的結(jié)果。



           

          3. Write a Java Client that uses the stubs

          在前面的步驟中,已經(jīng)利用RAD生成了一個Client。利用Stubs訪問Web Service變得非常簡單。在此用一個簡單的Servlet以測試:

          package servlet;

          import java.io.IOException;
          import java.net.MalformedURLException;
          import java.net.URL;
          import java.rmi.RemoteException;
          import java.util.Calendar;

          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          import javax.xml.rpc.ServiceException;

          import ejbs.GetTemperatureResponse;
          import ejbs.Weather;
          import ejbs.WeatherServiceLocator;

          /**
           * Servlet implementation class for Servlet: GetTemperature
           *
           
          */

           
          public class GetTemperature extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
              
          /* (non-Java-doc)
               * @see javax.servlet.http.HttpServlet#HttpServlet()
               
          */

              
          public GetTemperature() {
                  
          super();
              }
                 
              
              
          /* (non-Java-doc)
               * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
               
          */

              
          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                  WeatherServiceLocator weatherServiceLocator 
          = new WeatherServiceLocator();
                  
          try {
                      URL serviceURL 
          = new URL("http://dpta00398:9080/WeatherWeb/services/Weather");
                      Weather weather 
          = weatherServiceLocator.getWeather(serviceURL);
                      ejbs.GetTemperature inParam 
          = new ejbs.GetTemperature();
                      inParam.setDate(Calendar.getInstance());
                      GetTemperatureResponse rsp 
          = weather.getTemperature(inParam);
                      response.getWriter().write(
          "Temperature:" + rsp.getGetTemperatureReturn());
                  }
           catch (MalformedURLException e) {
                      response.getWriter().write(e.getMessage());
                  }
           catch (ServiceException e) {
                      response.getWriter().write(e.getMessage());
                  }
           catch (RemoteException e) {
                      response.getWriter().write(e.getMessage());
                  }

                  
              }
                
              
              
          /* (non-Java-doc)
               * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
               
          */

              
          protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                  doGet(request, response);
              }
                           
          }

           

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

          主站蜘蛛池模板: 晋中市| 金堂县| 江门市| 丹巴县| 延庆县| 托里县| 万山特区| 全南县| 北流市| 潞西市| 崇信县| 平和县| 甘肃省| 托克托县| 巨野县| 永昌县| 开阳县| 铁岭市| 固镇县| 明星| 嫩江县| 新乐市| 乾安县| 巴青县| 利辛县| 东乌| 桃江县| 昔阳县| 马尔康县| 兴国县| 南部县| 沁水县| 信丰县| 炉霍县| 鲜城| 天气| 东乌珠穆沁旗| 浦江县| 临高县| 江油市| 岑溪市|