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

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

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

    網(wǎng)路冷眼@BlogJava

    熙熙攘攘一閑人 以冷靜的眼光觀察技術(shù)
    posts - 88, comments - 193, trackbacks - 0, articles - 28
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
     原文地址:http://testwww.netbeans.org/kb/55/websvc-jax-ws_zh_CN.html

     

    Java EE 5 中的 Web 服務(wù) (JAX-WS)

    Java API for XML Web Services (JAX-WS) 2.0,JSR 224 是 Java EE 5 平臺(tái)的重要組成部分。作為 Java API for XML-based RPC 1.1 (JAX-RPC) 的后續(xù)發(fā)行版本,JAX-WS 簡(jiǎn)化了使用 Java 技術(shù)開發(fā) Web 服務(wù)的工作。并且通過(guò)對(duì)多種協(xié)議(如 SOAP 1.1、SOAP 1.2、XML)的支持,以及提供用于支持其他協(xié)議和 HTTP 的工具,它解決了 JAX-RPC 1.1 中存在的一些問(wèn)題。JAX-WS 使用 JAXB 2.0 提供數(shù)據(jù)綁定服務(wù),并支持通過(guò)定制來(lái)控制生成的服務(wù)端點(diǎn)接口。通過(guò)對(duì)標(biāo)注的支持,JAX-WS 簡(jiǎn)化了 Web 服務(wù)開發(fā),并縮小了運(yùn)行時(shí) JAR 文件的大小。

    本文檔向您介紹了有關(guān)使用 IDE 開發(fā) JAX-WS Web 服務(wù)以及在三個(gè)不同的客戶端(Java SE 應(yīng)用程序中的 Java 類、Web 應(yīng)用程序中的 Servlet 或 JSP 頁(yè))中使用該服務(wù)的基礎(chǔ)知識(shí)。在本文檔中創(chuàng)建的三個(gè)客戶端是獨(dú)立的應(yīng)用程序,它們都使用同一個(gè) Web 服務(wù)。

    預(yù)計(jì)持續(xù)時(shí)間:25 分鐘

    本教程所需的軟件

    在開始之前,您需要在計(jì)算機(jī)中安裝以下軟件:

    • NetBeans IDE 5.5下載
    • Java Standard Development Kit (JDK) 版本 5.0 或版本 6.0(下載
    • Sun Java System Application Server 9.0(如果未與安裝的 NetBeans IDE 捆綁在一起,請(qǐng)下載并單獨(dú)安裝它)。

    教程練習(xí)

    安裝并配置教程環(huán)境

    如果尚未注冊(cè) Sun Java System Application Server 9.0 的實(shí)例,則必須先進(jìn)行注冊(cè),然后才可以著手開發(fā) Java EE 5 應(yīng)用程序:

    1. 從主窗口中,選擇“工具”>“服務(wù)器管理器”。
    2. 單擊“添加服務(wù)器”。選擇 "Sun Java System Application Server",并為此實(shí)例指定一個(gè)名稱,然后,單擊“下一步”。
    3. 指定服務(wù)器信息、應(yīng)用服務(wù)器本地實(shí)例的位置以及要將 Web 服務(wù)部署到的域。
    4. 單擊“完成”。

    注意:也可以部署到 Tomcat Web Server,但由于它僅具有一個(gè) Web 容器,因此應(yīng)在下一部分創(chuàng)建 Web 應(yīng)用程序,而不是 EJB 模塊。與 JSR-109 Web 服務(wù)不同的是,JAX-WS Web 服務(wù)可以成功地部署到 Tomcat Web 容器中。

    創(chuàng)建 Web 服務(wù)

    本練習(xí)的目的是創(chuàng)建一個(gè)適用于您決定使用的部署容器的項(xiàng)目。在建立項(xiàng)目后,您將在其中創(chuàng)建 Web 服務(wù)。

    選擇容器

    您可以在 Web 容器或 EJB 容器中部署 Web 服務(wù)。這要取決于具體的選擇。例如,如果您計(jì)劃部署到僅具有 Web 容器的 Tomcat Web Server 上,則應(yīng)該選擇創(chuàng)建 Web 應(yīng)用程序,而不是 EJB 模塊。

    1. 選擇“文件”>“新建項(xiàng)目”(Ctrl-Shift-N)。從 "Web" 類別中,選擇“Web 應(yīng)用程序”,或者從“企業(yè)”類別中,選擇“EJB 模塊”。
    2. 將項(xiàng)目命名為 CalculatorWSApplication
    3. 根據(jù)要使用的部署服務(wù)器,請(qǐng)執(zhí)行以下操作:
      • 對(duì)于 Sun Java System Application Server,將 J2EE 版本設(shè)置為 "Java EE 5"。
      • 對(duì)于 Tomcat Web Server,請(qǐng)取消選中“將源代碼級(jí)別設(shè)置為 1.4”復(fù)選框。
    4. 單擊“完成”。

    通過(guò) Java 類創(chuàng)建 Web 服務(wù)

    1. 右鍵單擊 CalculatorWSApplication 節(jié)點(diǎn),然后選擇“新建”>“Web 服務(wù)”。
    2. 將 Web 服務(wù)命名為 CalculatorWS,在“包”中鍵入 org.me.calculator,然后單擊“完成”。

      將在“項(xiàng)目”窗口中顯示新建的 Web 服務(wù)。例如,對(duì)于 Web 應(yīng)用程序,現(xiàn)在“項(xiàng)目”窗口將如下所示:

      IDE 將自動(dòng)創(chuàng)建服務(wù)器所需的部署描述符(如果有)。對(duì)于 Sun Java System Application Server,則不需要部署描述符。對(duì)于部署到 Tomcat Web Server 的 Web 服務(wù),將添加 sun-jaxws.xml 以及 web.xml 中的 WSServlet 項(xiàng)。

    小結(jié)

    在本練習(xí)中,您創(chuàng)建了一個(gè) NetBeans 項(xiàng)目并建立了 Web 服務(wù)。

    對(duì) Web 服務(wù)進(jìn)行編碼

    本練習(xí)的目的是對(duì) IDE 生成的文件和代碼執(zhí)行一些有意義的操作。您將添加一個(gè)操作,該操作將從客戶端接收到的兩個(gè)數(shù)字相加起來(lái)。

    將業(yè)務(wù)邏輯添加到 Web 服務(wù)

    1. 展開“Web 服務(wù)”節(jié)點(diǎn),然后雙擊 "CalculatorWS" 節(jié)點(diǎn)。將在源代碼編輯器中打開 Web 服務(wù)。請(qǐng)注意,代碼中已存在了一個(gè)操作。它被注釋掉了。現(xiàn)在,我們將從頭開始創(chuàng)建一個(gè)新的操作。創(chuàng)建此操作的另一種方法是刪除代碼注釋掉的行。
    2. 在類主體(位于注釋掉的代碼之上或之下)中單擊鼠標(biāo)右鍵,然后選擇“Web 服務(wù)”>“添加操作”。
    3. 在“添加操作”對(duì)話框的上半部分,在“名稱”中鍵入 add,并從“返回類型”下拉列表中選擇 int
    4. 在“添加操作”對(duì)話框的下半部分,單擊“添加”,然后創(chuàng)建一個(gè)類型為 int、名為 i 的參數(shù)。單擊“確定”。
    5. 重新單擊“添加”,然后創(chuàng)建一個(gè)類型為 int、名為 j 的參數(shù)。
    6. 單擊位于“添加操作”對(duì)話框底部的“確定”。請(qǐng)注意,add 方法的框架已添加到源代碼編輯器中:

       

          @WebMethod
          public int add(@WebParam(name = "i") int i, @WebParam(name = "j") int j) {
          // TODO implement operation
          return 0;
          }

       

    7. 按如下所示更改 add 方法(更改內(nèi)容以粗體顯示):

       

          @WebMethod
          public int add(@WebParam(name = "i") int i, @WebParam(name = "j") int j) {
          int k = i + j;
          return k;
          }

       

    小結(jié)

    在本練習(xí)中,您已為 Web 服務(wù)添加了代碼。

    部署并測(cè)試 Web 服務(wù)

    在將 Web 服務(wù)部署到 Web 容器時(shí),IDE 允許您測(cè)試 Web 服務(wù)以查看它是否能夠按預(yù)期的那樣工作。鑒于此目的,我們?cè)?IDE 中集成了 Sun Java System Application Server 提供的 Tester 應(yīng)用程序。對(duì)于 Tomcat Web Server,也存在類似的工具。但是,Sun Java System Application Server 的 Tester 頁(yè)允許您輸入值并對(duì)其進(jìn)行測(cè)試,而 Tomcat Web Server 則不允許這樣做。在后一種情況下,您只能看到已部署了 Web 服務(wù),但是不能對(duì)值進(jìn)行測(cè)試。目前還沒有用于測(cè)試 EJB 模塊是否已成功部署的工具。

    測(cè)試是否已成功部署到 Web 容器:

    1. 右鍵單擊項(xiàng)目節(jié)點(diǎn),選擇“屬性”,然后單擊“運(yùn)行”。根據(jù)要使用的部署服務(wù)器,請(qǐng)執(zhí)行以下操作:
      • 對(duì)于 Sun Java System Application Server,在“相對(duì) URL”字段中鍵入 /CalculatorWSService?Tester
      • 對(duì)于 Tomcat Web Server,在“相對(duì) URL”字段中鍵入 /CalculatorWS?Tester

      注意:由于部署的 EJB 模塊的結(jié)果不會(huì)顯示在瀏覽器中,因此,如果您使用的是 EJB 模塊,則不能執(zhí)行上述步驟。

    2. 右鍵單擊項(xiàng)目節(jié)點(diǎn),然后選擇“運(yùn)行項(xiàng)目”。

      IDE 將啟動(dòng)應(yīng)用服務(wù)器、生成應(yīng)用程序,并在瀏覽器中打開 tester 頁(yè)(如果已將 Web 應(yīng)用程序部署到 Sun Java System Application Server)。對(duì)于使用 Tomcat Web Server 和部署 EJB 模塊來(lái)說(shuō),情況則有所不同:

      • 如果部署到 Tomcat Web Server,將看到以下內(nèi)容(表明已成功部署了 Web 服務(wù)):

      • 如果部署了 EJB 模塊,則“輸出”窗口顯示下面的消息才表明已成功部署:

         

            Deployment of application CalculatorWSApplication  completed successfully
                Enable of CalculatorWSApplication in target server   completed successfully
                Enable of application in all targets  completed successfully
                All operations completed successfully
                run-deploy:
                run:
                BUILD SUCCESSFUL

         

    3. 如果部署到 Sun Java System Application Server,在 tester 頁(yè)上鍵入兩個(gè)數(shù)字,如下所示:

    4. 將顯示這兩個(gè)數(shù)字的和:

    小結(jié)

    在本練習(xí)中,您已部署了 Web 服務(wù)并對(duì)其進(jìn)行了測(cè)試。

      使用 Web 服務(wù)

      部署 Web 服務(wù)后,我們需要?jiǎng)?chuàng)建一個(gè)客戶端來(lái)使用 Web 服務(wù)的 add 方法。在本練習(xí)中,我們將創(chuàng)建三個(gè)客戶端,即 Java SE 應(yīng)用程序中的 Java 類、Web 應(yīng)用程序中的 Servlet 和 JSP 頁(yè)。

      客戶端 1:Java SE 應(yīng)用程序中的 Java 類

      1. 選擇“文件”>“新建項(xiàng)目”(Ctrl-Shift-N)。從“常規(guī)”類別中,選擇“Java 應(yīng)用程序”。將項(xiàng)目命名為 CalculatorWS_Client_Application

        注意:在編寫本文檔時(shí),問(wèn)題 10 還仍未得到解決,您必須在其路徑包含空格的項(xiàng)目文件夾中創(chuàng)建 Web 服務(wù)客戶端。例如,路徑不能為 "C:\Documents and Settings\..."。

        單擊“完成”。

      2. 右鍵單擊 "CalculatorWS_Client_Application" 節(jié)點(diǎn),然后選擇“新建”>“Web 服務(wù)客戶端”。
      3. 在“項(xiàng)目”中,單擊“瀏覽”。找到要使用的 Web 服務(wù)。選擇 Web 服務(wù)后,單擊“確定”。
      4. 在“包”中鍵入 org.me.calculator.client,然后單擊“完成”。

        將在“項(xiàng)目”窗口中顯示新建的 Web 服務(wù)客戶端:

      5. 雙擊 "Main.java" 以在源代碼編輯器中將其打開。刪除 TODO 注釋,并在該行中單擊鼠標(biāo)右鍵。選擇“Web 服務(wù)客戶端資源”>“調(diào)用 Web 服務(wù)操作”。
      6. 找到“添加”操作,然后單擊“確定”。
      7. 將帶紅色下劃線的行更改為以下內(nèi)容:

         

            System.out.println("Sum: " + port.add(3,4));
      8. 右鍵單擊項(xiàng)目節(jié)點(diǎn),然后選擇“運(yùn)行項(xiàng)目”。

        現(xiàn)在“輸出”窗口會(huì)顯示以下內(nèi)容:

         

            compile:
                run:
                Sum: 7
                BUILD SUCCESSFUL (total time: 1 second)

         

      客戶端 2:Web 應(yīng)用程序中的 Servlet

      1. 選擇“文件”>“新建項(xiàng)目”(Ctrl-Shift-N)。從 "Web" 類別中,選擇“Web 應(yīng)用程序”。將項(xiàng)目命名為 CalculatorWSServletClient

        注意:在編寫本文檔時(shí),問(wèn)題 10 還仍未得到解決,您必須在其路徑包含空格的項(xiàng)目文件夾中創(chuàng)建 Web 服務(wù)客戶端。例如,路徑不能為 "C:\Documents and Settings\..."。

        單擊“完成”。

      2. 右鍵單擊 "CalculatorWSServletClient" 節(jié)點(diǎn),然后選擇“新建”>“Web 服務(wù)客戶端”。
      3. 在“項(xiàng)目”中,單擊“瀏覽”。找到要使用的 Web 服務(wù)。選擇 Web 服務(wù)后,單擊“確定”。
      4. 在“包”中鍵入 org.me.calculator.client,然后單擊“完成”。

        將在“項(xiàng)目”窗口中顯示新建的 Web 服務(wù)客戶端:

      5. 右鍵單擊項(xiàng)目節(jié)點(diǎn),然后選擇“新建”> "Servlet"。將 Servlet 命名為 ClientServlet,并將它放置在名為 org.me.calculator.client 的包中。單擊“完成”。要使 Servlet 成為應(yīng)用程序的入口點(diǎn),請(qǐng)右鍵單擊該項(xiàng)目節(jié)點(diǎn),選擇“屬性”,單擊“運(yùn)行”,然后在“相對(duì) URL”中鍵入 /ClientServlet。單擊“確定”。
      6. 在源代碼編輯器中,刪除注釋掉 processRequest 方法主體的行。該行是注釋掉代碼部分的起始行:

         

            /* TODO output your page here

        然后,刪除注釋掉代碼部分的結(jié)束行:

         

            */

        在以下行之后添加一些空行:

         

            out.println("<h1>Servlet ClientServlet at " + request.getContextPath () + "</h1>");

        現(xiàn)在,在您添加的一個(gè)空行中單擊鼠標(biāo)右鍵,選擇“Web 服務(wù)客戶端資源”>“調(diào)用 Web 服務(wù)操作”。將出現(xiàn)“選擇要調(diào)用的操作”對(duì)話框。

      7. 找到 add 操作,然后單擊“確定”。

        現(xiàn)在 processRequest 方法應(yīng)該如下所示(下面以粗體顯示添加的代碼):

         

            protected void processRequest(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
                response.setContentType("text/html;charset=UTF-8");
                PrintWriter out = response.getWriter();
                out.println("<html>");
                out.println("<head>");
                out.println("<title>Servlet ClientServlet</title>");
                out.println("</head>");
                out.println("<body>");
                out.println("<h1>Servlet ClientServlet at " + request.getContextPath () + "</h1>");
                try { // Call Web Service Operation
                org.me.calculator.client.CalculatorWSService service = new org.me.calculator.client.CalculatorWSService();
                org.me.calculator.client.CalculatorWS port = service.getCalculatorWSPort();
                // TODO initialize WS operation arguments here
                int arg0 = 0;
                int arg1 = 0;
                // TODO process result here
                int result = port.add(arg0, arg1);
                System.out.println("Result = "+result);
                } catch (Exception ex) {
                // TODO handle custom exceptions here
                }
                out.println("</body>");
                out.println("</html>");
                out.close();
                }

         

        arg0arg1 的值更改為其他數(shù)值,如 3 和 4。

        System.out.println 語(yǔ)句更改為 out.println

        添加輸出異常的行(如果拋出異常)。

        現(xiàn)在 try/catch 塊應(yīng)該如下所示(會(huì)突出顯示新行和更改行):

         

            try { // Call Web Service Operation
                org.me.calculator.client.CalculatorWSService service = new org.me.calculator.client.CalculatorWSService();
                org.me.calculator.client.CalculatorWSApplication port = service.getCalculatorWSApplicationPort();
                // TODO initialize WS operation arguments here
                int arg0 = 3;
                int arg1 = 4;
                // TODO process result here
                int result = port.add(arg0, arg1);
                out.println("<p>Result: " + result);
                } catch (Exception ex) {
                out.println("<p>Exception: " + ex);
                }

         

      8. 右鍵單擊項(xiàng)目節(jié)點(diǎn),然后選擇“運(yùn)行項(xiàng)目”。

        將啟動(dòng)服務(wù)器(如果它尚未運(yùn)行),生成并部署應(yīng)用程序,并且打開瀏覽器以顯示計(jì)算結(jié)果。

      客戶端 3:Web 應(yīng)用程序中的 JSP 頁(yè)

      1. 選擇“文件”>“新建項(xiàng)目”(Ctrl-Shift-N)。從 "Web" 類別中,選擇“Web 應(yīng)用程序”。將項(xiàng)目命名為 CalculatorWSJSPClient

        注意:在編寫本文檔時(shí),問(wèn)題 10 還仍未得到解決,您必須在其路徑包含空格的項(xiàng)目文件夾中創(chuàng)建 Web 服務(wù)客戶端。例如,路徑不能為 "C:\Documents and Settings\..."。

        單擊“完成”。

      2. 右鍵單擊 "CalculatorWSJSPClient" 節(jié)點(diǎn),然后選擇“新建”>“Web 服務(wù)客戶端”。
      3. 在“項(xiàng)目”中,單擊“瀏覽”。找到要使用的 Web 服務(wù)。選擇 Web 服務(wù)后,單擊“確定”。
      4. 在“包”中鍵入 org.me.calculator.client,然后單擊“完成”。

        將在“項(xiàng)目”窗口中顯示新建的 Web 服務(wù)客戶端。

      5. 在“Web 頁(yè)”文件夾中,雙擊 "index.jsp" 以在源代碼編輯器中將其打開。
      6. 在“Web 服務(wù)引用”節(jié)點(diǎn)中,展開表示 Web 服務(wù)的節(jié)點(diǎn)。現(xiàn)在將公開要從客戶端調(diào)用的 add 操作。
      7. add 操作拖動(dòng)到客戶端的 index.jsp 頁(yè)上,并將其放在 H1 標(biāo)記之下。現(xiàn)在,將在 index.jsp 頁(yè)中生成用于調(diào)用服務(wù)操作的代碼。

        arg0arg1 的值更改為其他數(shù)值,如 3 和 4。

      8. 右鍵單擊項(xiàng)目節(jié)點(diǎn),然后選擇“運(yùn)行項(xiàng)目”。

        將啟動(dòng)服務(wù)器(如果它尚未運(yùn)行),生成并部署應(yīng)用程序,并且打開瀏覽器以顯示計(jì)算結(jié)果:



      后續(xù)步驟

      有關(guān)使用 NetBeans IDE 5.5 開發(fā) Java EE 應(yīng)用程序的更多信息,請(qǐng)參見以下資源:

      要發(fā)送意見和建議、獲得支持以及隨時(shí)了解 NetBeans IDE Java EE 開發(fā)功能的最新開發(fā)情況,請(qǐng)加入 nbj2ee@netbeans.org 郵件列表

      主站蜘蛛池模板: 人禽伦免费交视频播放| 亚洲男女内射在线播放| va亚洲va日韩不卡在线观看| 在线观看免费播放av片| 亚洲AV综合色区无码一二三区| 亚洲精品无码不卡| 国产精品亚洲美女久久久| 国产精品无码免费视频二三区 | 成全高清视频免费观看| 巨波霸乳在线永久免费视频 | 亚洲欧洲日本在线| 国产成人无码免费视频97| 无码专区永久免费AV网站| 99久久久国产精品免费牛牛四川 | 伊伊人成亚洲综合人网7777| 国产在线观看免费视频播放器| 国产免费av片在线看| 久草视频免费在线| 最近免费中文字幕mv在线电影| 好久久免费视频高清| 国产一区二区三区免费观看在线| 成人a毛片视频免费看| 色爽黄1000部免费软件下载| 国产99久久亚洲综合精品| 色欲aⅴ亚洲情无码AV蜜桃| 亚洲精品无码中文久久字幕| 亚洲熟女综合色一区二区三区| 33333在线亚洲| 亚洲午夜无码久久久久小说| 亚洲免费福利在线视频| 亚洲制服丝袜第一页| 色在线亚洲视频www| 亚洲性无码AV中文字幕| 亚洲国产精华液2020| 在线91精品亚洲网站精品成人| 国产成人精品亚洲一区| 麻豆安全免费网址入口| 国产精品极品美女自在线观看免费| 一级黄色免费大片| 不卡视频免费在线观看| 国产日韩AV免费无码一区二区|