<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

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

    在RAD7中為EJB創建Web Service

    Posted on 2009-03-17 15:23 馬達+斯加 閱讀(1010) 評論(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。

    為了簡化過程,只在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,選擇剛才創建的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/JMSweb 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以測試:

    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》

    主站蜘蛛池模板: 久久无码av亚洲精品色午夜| 日韩精品人妻系列无码专区免费| 免费精品国产日韩热久久| 亚洲av色影在线| 免费精品一区二区三区第35| 亚洲午夜国产精品无码老牛影视| 亚洲中文无码a∨在线观看| 国产好大好硬好爽免费不卡| 国产亚洲情侣一区二区无| 两个人看的www免费高清| 毛片免费vip会员在线看| 亚洲综合精品第一页| 免费的一级黄色片| 男男黄GAY片免费网站WWW| 69xx免费观看视频| 国产.亚洲.欧洲在线| 免费观看男人免费桶女人视频| 亚洲av永久无码一区二区三区| 最近中文字幕完整版免费高清| 亚洲精品成人网站在线播放| 亚洲高清视频免费| 亚洲人成小说网站色| 老司机永久免费网站在线观看| 免费国产在线精品一区 | 亚洲偷自精品三十六区| 成人免费a级毛片| 小说区亚洲自拍另类| 亚洲av午夜福利精品一区| 免费毛片毛片网址| 亚洲av无码国产精品色午夜字幕| 91精品国产免费入口| 亚洲av无码专区亚洲av不卡| 亚洲精品乱码久久久久久不卡| 免费av片在线观看网站| 男人天堂2018亚洲男人天堂| 亚洲AV无码乱码在线观看| 久久99毛片免费观看不卡| 亚洲人成www在线播放| 亚洲A丁香五香天堂网| 久久久久成人片免费观看蜜芽| 亚洲综合一区无码精品|