<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》

    主站蜘蛛池模板: 美女被免费网站视频在线| 午夜色a大片在线观看免费| 国产精品亚洲精品久久精品 | 久久久久亚洲AV无码观看| 亚洲第一区精品日韩在线播放| 亚洲香蕉免费有线视频| 精品多毛少妇人妻AV免费久久 | 成人免费无码大片a毛片| 99久久免费中文字幕精品| av午夜福利一片免费看久久| 亚洲熟妇无码AV| 亚洲国产成人久久77| 亚洲资源在线观看| 亚洲国产精品SSS在线观看AV| 亚洲国产黄在线观看| 日本不卡免费新一二三区| 无码人妻一区二区三区免费| 亚洲日本在线免费观看| a毛片在线免费观看| gogo免费在线观看| 成人一级免费视频| 真正全免费视频a毛片| 久久亚洲精品11p| 亚洲av成本人无码网站| 亚洲精品二三区伊人久久| 亚洲的天堂av无码| 中文字幕亚洲免费无线观看日本| 亚洲av永久无码精品古装片| 亚洲日韩一页精品发布| 亚洲精品国偷自产在线| 亚洲中文字幕久久精品无码喷水 | 亚洲国产成AV人天堂无码| 亚洲人成网址在线观看| 亚洲一区免费观看| 亚洲春色在线观看| 久久精品国产亚洲av麻豆图片| 亚洲精品亚洲人成在线观看麻豆 | 两个人看的www免费视频| CAOPORN国产精品免费视频| 三上悠亚电影全集免费| 国产免费阿v精品视频网址|