FeaturesPluginsDocs & SupportCommunityPartners

JAX-WS Web サービスについて

Java API for XML Web Services (JAX-WS) 2.0/2.1、JSR 224 は、Java EE 5 プラットフォームの重要な部分です。JAX-RPC (Java API for XML-based RPC 1.1) の追加リリースである JAX-WS は、Java テクノロジを使用した Web サービスの開発作業を簡素化します。SOAP 1.1、SOAP 1.2、XML など複数のプロトコルのサポート、および HTTP 以外のプロトコルもサポートできる機能を備えることにより、JAX-RPC 1.1 の問題の一部に対処しています。JAX-WS はデータ結合に JAXB 2.0 を使用し、生成したサービス終了点インタフェースのカスタマイズをサポートしています。注釈がサポートされているため、JAX-WS では Web サービス開発が簡素化され、実行時の JAR ファイルのサイズが小さくなっています。

このドキュメントでは、IDE で JAX-WS の Web サービスを開発し、Java SE アプリケーションの Java クラス、Web アプリケーションのサーブレット、または Web アプリケーションの JSP ページという 3 つの異なるクライアントで使用する場合の基本を説明します。このドキュメントで作成する 3 つのクライアントは別々のアプリケーションですが、同じ Web サービスを使用します。クライアントに焦点を当てた、さらに詳細なチュートリアルは、「JAX-WS Web サービスクライアントの開発」です。

目次

このページの内容は NetBeans IDE 6.0 および 6.1 が対象です

このチュートリアルに従うには、次のソフトウェアとリソースが必要です。

ソフトウェアまたはリソース 必須バージョン
NetBeans IDE Web および Java EE の version 6.0 または 6.1
Java Development Kit (JDK) version 6 または
version 5
Java EE 互換の Web サーバーまたはアプリケーションサーバー Tomcat Web サーバー 6.0 および/または
GlassFish アプリケーションサーバー v2

Tomcat および GlassFish は、どちらも NetBeans IDE の Web および Java EE の配布とともにインストールできます。または、GlassFish のダウンロードページまたは Apache Tomcat のダウンロードページからダウンロードすることもできます。

Web サービスの作成

この課題の目標は、使用予定の配備コンテナに適したプロジェクトを作成することです。プロジェクトが完成したら、その中に Web サービスを作成します。

コンテナの選択

Web サービスは Web コンテナまたは EJB コンテナに配備できます。これは実装方法の選択によって決まります。たとえば Tomcat Web サーバーに配備する予定の場合、Tomcat Web サーバーには Web コンテナしかないため、EJB モジュールではなく Web アプリケーションの作成を選択してください。

  1. 「ファイル」>「新規プロジェクト」(Ctrl-Shift-N) を選択します。「Web」カテゴリから「Web アプリケーション」を選択するか、「エンタープライズ」カテゴリから「EJB モジュール」を選択します。
  2. プロジェクトに CalculatorWSApplication という名前を付けます。
  3. 使用する予定の配備先サーバーにより、次の作業を行います。
    • GlassFish の場合、「Java EE バージョン」を「Java EE 5」に設定します。
    • Tomcat Web サーバーの場合、「ソースレベルを 1.4 に設定」チェックボックスの選択を解除します。
  4. 残りのページもクリックして進み、「完了」をクリックします。

Java クラスからの Web サービスの作成

  1. CalculatorWSApplication」ノードを右クリックし、「新規」>「Web サービス」を選択します。
  2. Web サービス名を「CalculatorWS」とし、「パッケージ」に「org.me.calculator」と入力して「完了」をクリックします。

    「プロジェクト」ウィンドウに新しい Web サービスの構造が表示され、エディタ領域にビジュアルデザイナが表示されます。たとえば Web アプリケーションの場合、次のように表示されているはずです。


    Web サービスを表示している「プロジェクト」ウィンドウ

Web サービスの設計

この課題の目標は、IDE が生成したファイルとコードで何か実用的な処理をすることです。クライアントから受け取った 2 つの数字を足し算するオペレーションを追加します。

Web サービスへのビジネスロジックの追加

  1. ビジュアルデザイナで「オペレーションを追加」をクリックします。新しいオペレーションを定義できるダイアログが表示されます。
  2. 「オペレーションを追加」ダイアログの上の部分で、「名前」に「add」、「戻り値の型」ドロップダウンリストに「int」と入力します。「オペレーションを追加」ダイアログの下の部分で、「追加」をクリックして int 型の i という名前のパラメータを作成します。ふたたび「追加」をクリックし、int 型の j というパラメータを作成します。

    画面は次のようになります。


    「オペレーションを追加」ダイアログ
  3. 「オペレーションを追加」ダイアログの最下部で「了解」をクリックします。

    ビジュアルデザイナでは次のように表示されます。


    追加したオペレーションを表示する Web サービスのビジュアルデザイナ
  4. 「ソース」をクリックすると、前の手順で生成されたソースコードが、次のようになっていることがわかります。
    結果
  5. エディタで、スケルトンの add オペレーションを次のように拡張します (変更部分はボールドで表示)。
        @WebMethod
        public int add(@WebParam(name = "i") int i, @WebParam(name = "j") int j) {
            int k = i + j;
            return k;
                }

このコードからわかるように、この Web サービスは単に 2 つの数字を受け取り、合計を返すだけです。次の節では IDE でこの Web サービスをテストします。

Web サービスの配備およびテスト

Web サービスを Web コンテナに配備すると、Web サービスが期待どおりに機能するかどうかを IDE でテストできます。GlassFish が提供する Tester アプリケーションは、この目的で IDE に組み込まれています。Tomcat Web サーバーにも同様のツールがあります。ただし、GlassFish の Tester ページでは値を入力してテストできますが、Tomcat Web サーバーではできません。後者の場合、Web サービスが配備されていることは確認できますが、値のテストはできません。EJB モジュールが正常に配備されて現在使用可能かどうかをテストする機能はありません。

Web コンテナへ正常に配備されていることをテストするには、次の手順に従います。

  1. プロジェクトを右クリックし、「実行」を選択します。

    IDE がアプリケーションサーバーを起動してアプリケーションを構築し、ブラウザが開きます。

  2. Web サービスノードを展開し、作成した Web サービスのノードを右クリックして「Web サービスをテスト」を選択します。

    GlassFish に Web アプリケーションを配備した場合、テスターページがブラウザで開きます。Tomcat Web サーバーの場合および EJB モジュールを配備している場合、状況は異なります。

    • GlassFish に配備した場合、次のようにテスターページに 2 つの数字を入力します。
      サービスが GlassFish に正常に配備された場合の Web サービスのテスターページ

      2 つの数字の合計が次のように表示されます。


      Web サービスのテスト結果を表示する Web ページ
    • Tomcat Web サーバーに配備した場合、次の画面が表示されます。これは Web ページが正常に配備できたことを示しています。
      Tomcat サーバーに Web サービスが正常に配備された場合に表示される Web ページ
    • プロジェクトノードを右クリックし、「プロパティー」を選択して「実行」をクリックします。使用する予定の配備先サーバーにより、次の作業を行います。
      • GlassFish の場合、「相対 URL」フィールドに「/CalculatorWSService?Tester」と入力します。
      • Tomcat Web サーバーの場合、「相対 URL」フィールドに「/CalculatorWS?Tester」と入力します。

      注: EJB モジュールで作業している場合、配備した EJB モジュールの結果はブラウザに表示されないため、この手順は実行できません。

Web サービスの使用

作成した Web サービスの配備が完了したので、次は Web サービスの add メソッドを使用するクライアントを作成する必要があります。ここでは、Java SE アプリケーションの Java クラス、Web アプリケーションのサーブレット、および Web アプリケーションの JSP ページという 3 つのクライアントを作成します。

注: クライアントに焦点を当てた、さらに詳細なチュートリアルは、「JAX-WS Web サービスクライアントの開発」です。

クライアント 1: Java SE アプリケーションの Java クラス

この節では、標準の Java アプリケーションを作成します。アプリケーションの作成に使用するウィザードで Java クラスも作成できます。続いて IDE のツールで、このチュートリアルの初めに作成した Web サービスを使用します。

  1. 「ファイル」>「新規プロジェクト」(Ctrl-Shift-N) を選択します。「Java」カテゴリから「Java アプリケーション」を選択します。プロジェクトに CalculatorWS_Client_Application という名前を付けます。「主クラスを作成」を選択状態にし、その他のデフォルト設定はそのまま受け入れます。「完了」をクリックします。
  2. NetBeans IDE 6.0.x を使用している場合、CalculatorWS_Client_Application プロジェクトのプロパティーを修正します。プロジェクトノードを右クリックし、「プロパティー」を選択します。「プロジェクトプロパティー」ダイアログが開きます。次の手順は使用している JDK によって異なります。
    • JDK 6 Update 4 より前の JDK の場合、「ライブラリ」カテゴリを選択して JAX-WS ライブラリおよび JAXB ライブラリをインポートします。
    • JDK 6 Update 4 以降の場合、「実行」カテゴリを選択して「VM オプション」を削除します。
  3. CalculatorWS_Client_Application」ノードを右クリックし、「新規」>「Web サービスクライアント」を選択します。
  4. 「プロジェクト」で「参照」をクリックします。使用する Web サービスを見つけます。Web サービスを選択したら、「了解」をクリックします。
  5. ほかの設定はデフォルトのまま (6.0.x の場合、パッケージ名を設定しない) にし、「完了」をクリックします。

    次のように、「プロジェクト」ウィンドウに新しい Web サービスクライアントが表示され、作成した add メソッドのノードが追加されています。


    「プロジェクト」ウィンドウに表示された Java SE アプリケーションの新規 Web サービスクライアント
  6. Main.java をダブルクリックして、ソースエディタで開きます。TODO コメントを削除し、続いて add ノードを空の行の上にドラッグします。画面は次のようになります。
    public static void main(String[] args) {
    
        try { // Call Web Service Operation
            org.me.calculator.CalculatorWSService service = new org.me.calculator.client.CalculatorWSService();
            org.me.calculator.CalculatorWS port = service.getCalculatorWSPort();
            // TODO initialize WS operation arguments here
            int i = 0;
            int j = 0;
            // TODO process result here
            int result = port.add(i, j);
            System.out.println("Result = "+result);
        } catch (Exception ex) {
            // TODO handle custom exceptions here
        }
    
                    }

    注: 別の方法として、add ノードをドラッグする代わりに、エディタ上で右クリックして「Web サービスクライアントのリソース」>「Web サービスオペレーションを呼び出す」を選択します。

  7. 3 や 4 など意味のある数字で 2 つの int を初期化します。前述の int の値を 0 から別の数字に変更するだけです。
  8. プロジェクトのノードを右クリックし、「実行」を選択します。

    「出力」ウィンドウで次のような合計が表示されるはずです。

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

クライアント 2: Web アプリケーションのサーブレット

この節では、新しい Web アプリケーションを作成し、続いてサーブレットを作成します。次にこのサーブレットを使用して、チュートリアルの初めに作成した Web サービスを使用します。

  1. 「ファイル」>「新規プロジェクト」(Ctrl-Shift-N) を選択します。「Web」カテゴリから「Web アプリケーション」を選択します。プロジェクトに CalculatorWSServletClient という名前を付けます。「完了」をクリックします。
  2. CalculatorWSServletClient」ノードを右クリックし、「新規」>「Web サービスクライアント」を選択します。

    「新規 Web サービスクライアント」ウィザードが表示されます。

  3. 「プロジェクト」で「参照」をクリックします。使用する Web サービスを見つけます。Web サービスを選択したら、「了解」をクリックします。
  4. ほかの設定はデフォルトのまま (6.0.x の場合、パッケージ名を設定しない) にし、「完了」をクリックします。
  5. 先ほどこのチュートリアルで作成した add オペレーションも含め、「プロジェクト」ウィンドウの「Web サービス参照」ノードに新しく作成したクライアントの構造が次のように表示されます。


    「プロジェクト」ウィンドウに表示された、サーブレットの新しい Web サービスクライアント
  6. CalculatorWSServletClient」プロジェクトノードを右クリックし、「新規」>「サーブレット」を選択します。サーブレットに ClientServlet と名前を付け、org.me.calculator.client というパッケージに保存します。「完了」をクリックします。
  7. このサーブレットをアプリケーションの入場点として指定するには、プロジェクトのノードを右クリックして「プロパティー」を選択し、「実行」をクリックして「相対 URL」に「/ClientServlet」と入力します。「閉じる」をクリックします。
  8. ソースエディタで、processRequest メソッドの本文をコメントアウトしている行を削除します。次の行です。
        /* TODO output your page here

    続いて、コメントアウトコードのセクションの終わりの行を削除します。

        */

    この行のあとに空の行をいくつか追加します。

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

    次に、add オペレーションを示すノードを、作成した空の行にドラッグします。

    processRequest メソッドは次のように表示されるはずです (追加されたコードはボールドで表示)。

        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.CalculatorWS port = service.getCalculatorWSPort();
                // TODO initialize WS operation arguments here
                int i = 0;
                int j = 0;
                // TODO process result here
                int result = port.add(i, j);
                out.println("Result = "+result);
            } catch (Exception ex) {
                // TODO handle custom exceptions here
            }
    
            out.println("</body>");
            out.println("</html>");
            out.close();
                        }

    i および j の値を 3 や 4 など意味のある数字に変更します。

  9. プロジェクトのノードを右クリックし、「実行」を選択します。

    サーバーが起動していない場合は起動し、アプリケーションが構築および配備され、ブラウザが開いて次のように計算結果を表示します。
    「プロジェクト」ウィンドウに表示された、サーブレットの新しい Web サービスクライアント

クライアント 3: Web アプリケーションの JSP ページ

この節では、新しい Web アプリケーションを作成したあと、「Web アプリケーション」ウィザードで作成したデフォルトの JSP ページで Web サービスを使用します。

  1. 「ファイル」>「新規プロジェクト」(Ctrl-Shift-N) を選択します。「Web」カテゴリから「Web アプリケーション」を選択します。プロジェクトに CalculatorWSJSPClient という名前を付けます。「完了」をクリックします。
  2. CalculatorWSJSPClient」ノードを右クリックし、「新規」>「Web サービスクライアント」を選択します。
  3. 「プロジェクト」で「参照」をクリックします。使用する Web サービスを見つけます。Web サービスを選択したら、「了解」をクリックします。
  4. ほかの設定はデフォルトのまま (6.0.x の場合、パッケージ名を設定しない) にし、「完了」をクリックします。

    次のように、「プロジェクト」ウィンドウに新しい Web サービスクライアントが表示されます。


    「プロジェクト」ウィンドウに表示された、サーブレットの新しい Web サービスクライアント
  5. 「Web サービス参照」ノードで、Web サービスを示すノードを展開します。ここで、クライアントから呼び出す add オペレーションが表示されます。
  6. add オペレーションをクライアントの index.jsp ページにドラッグし、H1 タグの下にドロップします。次のように、サービスのオペレーションを呼び出すコードが index.jsp ページに生成されます。
    <%
    try {
        org.me.calculator.CalculatorWSService service =
            new org.me.calculator.CalculatorWSService();
        org.me.calculator.CalculatorWS port =
            service.getCalculatorWSPort();
         // TODO initialize WS operation arguments here
        int i = 0;
        int j = 0;
        // TODO process result here
        int result = port.add(i, j);
        out.println("Result = "+result);
    } catch (Exception ex) {
        // TODO handle custom exceptions here
    }
    %>

    i および j の値を 0 から 3 や 4 など意味のある数字に変更します。

  7. プロジェクトのノードを右クリックし、「実行」を選択します。

    サーバーが起動していない場合は起動し、アプリケーションが構築および配備され、ブラウザが開いて次のように計算結果を表示します。


    結果を表示する JSP ページ


関連項目

NetBeans IDE を使用した Java EE アプリケーションの開発方法についての詳細は、次のリソースを参照してください。

メーリングリストに登録することによって、NetBeans IDE Java EE 開発機能に関するご意見やご提案を送信したり、サポートを受けたり、最新の開発情報を入手したりできます。

Bookmark this page

del.icio.us furl simpy slashdot technorati digg
Companion
Projects:
MySQL Database Server   Open JDK: an Open SourceJDK   GlassFish Community: an Open Source Application Server    Mobile & Embedded Community    Open Solaris   java.net - The Source for Java Technology Collaboration   Virtual Box - full virtualizer  Open ESB - The Open Enterprise Service Bus Powered by