corner imagecorner image
IDEPlatformPluginsDocs & SupportCommunityPartners

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

Java API for XML Web Services (JAX-WS) 、JSR 224 は、Java EE 5 および EE 6 プラットフォームの重要な部分です。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 サービス開発の基本を示します。Web サービスを作成したら、ネットワーク経由で Web サービスを使用する (Web サービスを「消費する」とも呼ばれる)、3 つの異なる Web サービスクライアントを記述します。3 つのクライアントとは、Java SE アプリケーションの Java クラス、サーブレット、および Web アプリケーションの JSP ページです。クライアントに焦点を当てた、さらに詳細なチュートリアルは、「JAX-WS Web サービスクライアントの開発」です。

目次

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

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

ソフトウェアまたはリソース 必須バージョン
NetBeans IDE Java ダウンロードバンドル
Java Development Kit (JDK) version 6
Java EE 互換の Web サーバーまたはアプリケーションサーバー Tomcat 6.x - 7.0 Web サーバー
GlassFish Server Open Source Edition
Oracle WebLogic Server

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

Web サービスの作成

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

コンテナの選択

Web サービスは Web コンテナまたは EJB コンテナに配備できます。これは、選択する実装によって変わります。Java EE 6 アプリケーションを作成している場合、EJB を直接 Web アプリケーションに配置できるため、どのような場合でも Web コンテナを使用します。たとえば Tomcat Web サーバーに配備する予定の場合、Tomcat Web サーバーには Web コンテナしかないため、EJB モジュールではなく Web アプリケーションを作成します。

  1. 「ファイル」>「新規プロジェクト」(Ctrl-Shift-N) を選択します。「Java Web」カテゴリから「Web アプリケーション」を選択するか、「Java EE」カテゴリから「EJB モジュール」を選択します。

    JAX-WS Web サービスは Maven プロジェクトで作成できます。「ファイル」>「新規プロジェクト」(Ctrl-Shift-N) を選択し、「Maven」カテゴリから「Web アプリケーション」または「EJB モジュール」を選択します。以前に NetBeans とともに Maven を使用したことがない場合は、「Maven のベストプラクティス」を参照してください。

  2. プロジェクトに CalculatorWSApplication という名前を付けます。プロジェクトの場所を選択します。「次へ」をクリックします。
  3. サーバーと Java EE のバージョンを選択して「完了」をクリックします。

    Oracle WebLogic Server を使用するには、IDE にサーバーを登録します。また、WebLogic Server を使用している場合は、「Oracle WebLogic への Web アプリケーションの配備」のスクリーンキャストも参照してください。

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

  1. CalculatorWSApplication」ノードを右クリックし、「新規」>「Web サービス」を選択します。
  2. Web サービスに CalculatorWS という名前を付け、「パッケージ」に「org.me.calculator」と入力します。「Web サービスを新規に作成」は選択したままにします。
  3. Java EE 6 プロジェクトを作成している場合、「ステートレスセッション Bean として Web サービスを実装」を選択します。
    Bean のオプションを伴う、EE 6 用の新しい Web サービスウィザード
  4. 「完了」をクリックします。「プロジェクト」ウィンドウに新しい Web サービスの構造が表示され、エディタ領域にソースコードが表示されます。

Web サービスへのオペレーションの追加

この課題の目的は、クライアントから受け取った 2 つの数字を追加するオペレーションを Web サービスに追加することです。NetBeans IDE には、オペレーションを Web サービスに追加するためのダイアログがあります。このダイアログは、Web サービスのビジュアルデザイナまたはコンテキストメニューから開くことができます。

警告: ビジュアルデザイナは Maven プロジェクトでは利用できません。

オペレーションを Web サービスに追加する

  1. 次のどちらかを行います。
    • エディタを「デザイン」ビューに切り替えます。
      Web サービスエディタの「デザイン」ビュー

    または:

    • 「プロジェクト」ウィンドウで Web サービスのノードを探します。そのノードを右クリックします。コンテキストメニューが開きます。
      Web サービスのコンテキストメニューで「オペレーションを追加」項目を選択
  2. ビジュアルデザイナまたはコンテキストメニューで「オペレーションを追加」をクリックします。新しいオペレーションを定義できるダイアログが表示されます。
  3. 「オペレーションを追加」ダイアログの上の部分で、「名前」に「add」、「戻り値の型」ドロップダウンリストに「int」と入力します。「オペレーションを追加」ダイアログの下の部分で、「追加」をクリックして int 型の i という名前のパラメータを作成します。ふたたび「追加」をクリックし、int 型の j というパラメータを作成します。

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


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

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


    追加したオペレーションを表示する Web サービスのビジュアルデザイナ
  5. 「ソース」をクリックし、前の手順で作成したコードを表示します。これは、サービスを EE6 ステートレス Bean として作成したかどうかによって異なります。次のスクリーンショットの違いがわかりますか。
    結果: EE5結果: EE 6 ステートレス Bean
  6. エディタで、スケルトンの 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 サービスをサーバーに配備したあとに、サーバーにテストクライアントがある場合は IDE を使用してサーバーのテストクライアントを開くことができます。GlassFish および WebLogic サーバーはテストクライアントを提供します。Tomcat Web サーバーを使用している場合、テストクライアントはありませんが、Web サービスが配備されていることを示すページを IDE で開くことができます。EJB モジュールが正常に配備されて現在使用可能かどうかをテストする機能はありません。

サーバーへの正常な配備をテストする

  1. プロジェクトを右クリックし、「配備」を選択します。アプリケーションサーバーが開始され、アプリケーションが構築されて、サーバーに配備されます。これらのオペレーションの進行状況は、「出力」ビューの「CalculatorWSApplication (run-deploy)」および「GlassFish Server 3」タブまたは「Tomcat」タブで確認できます。
  2. IDE の「プロジェクト」タブで、CalculatorWSApplication プロジェクトの「Web サービス」ノードを展開します。「CalculatorWS」ノードを右クリックし、「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 モジュールの結果はブラウザに表示されないため、この手順は実行できません。

サンプル

Calculator サービスの完全な EE6 バージョンを開くには、「ファイル」>「新規プロジェクト」(Ctrl-Shift-N) を選択し、「サンプル」>「Java Web サービス」>「Calculator (Java EE 6)」の順に選択します。

「Maven Calculator サービス」および「Maven Calculator クライアント」は「サンプル」>「Maven」カテゴリにあります。

Web サービスの使用

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

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

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

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

  1. 「ファイル」>「新規プロジェクト」(Ctrl-Shift-N) を選択します。「Java」カテゴリから「Java アプリケーション」を選択します。プロジェクトに CalculatorWS_Client_Application という名前を付けます。「主クラスを作成」を選択状態にし、その他のデフォルト設定はそのまま受け入れます。「完了」をクリックします。
  2. CalculatorWS_Client_Application」ノードを右クリックし、「新規」>「Web サービスクライアント」を選択します。「新規 Web サービスクライアント」ウィザードが開きます。
  3. WSDL ソースとして「プロジェクト」を選択します。「参照」をクリックします。「CalculatorWSApplication」プロジェクトの「CalculatorWS」Web サービスを探します。Web サービスを選択したら、「了解」をクリックします。
    CalculatorWS サービスを表示する「Web サービスを参照」ダイアログ
  4. NetBeans IDE 7.0-7.1 では、クライアント Java アーティファクトのパッケージを選択できます。このフィールドは空のままにします。
    パッケージ名を表示する「新規 Web サービスクライアント」ウィザード
  5. その他の設定はデフォルトのままにし、「完了」をクリックします。

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


    「プロジェクト」ウィンドウに表示された Java SE アプリケーションの新規 Web サービスクライアント
  6. 主クラスをダブルクリックしてソースエディタで開きます。add ノードを main() メソッドの下にドラッグします。
    main クラスの本体に add オペレーションをドラッグ&ドロップ

    コードは次のようになります。

    public static void main(String[] args) {
        // TODO コードアプリケーションのロジックをここに記述
    }
    private static int add(int i, int j) {
        org.me.calculator.CalculatorWS_Service service = new org.me.calculator.CalculatorWS_Service();
        org.me.calculator.CalculatorWS port = service.getCalculatorWSPort();
        return port.add(i, j);
    }

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

  7. main() メソッドの本体で、TODO コメントの部分を、i および j の値を初期化し、add() を呼び出し、結果を出力するコードに置き換えます。
    public static void main(String[] args) {
    int i = 3;
    int j = 4;
    int result = add(i, j);
    System.out.println("Result = " + result); }
  8. 例外を出力する try/catch ブロックで main() メソッドのコードを囲みます。
    public static void main(String[] args) {
    try {
    int i = 3;
    int j = 4;
    int result = add(i, j);
    System.out.println("Result = " + result);
    } catch (Exception ex) {
    System.out.println("Exception: " + ex);
    } }
  9. プロジェクトのノードを右クリックし、「実行」を選択します。

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

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

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

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

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

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

  3. WSDL ソースとして「プロジェクト」を選択します。「参照」をクリックします。「CalculatorWSApplication」プロジェクトの「CalculatorWS」Web サービスを探します。Web サービスを選択したら、「了解」をクリックします。
    CalculatorWS サービスを表示する「Web サービスを参照」ダイアログ
  4. NetBeans IDE 7.0-7.1 では、クライアント Java アーティファクトのパッケージを選択できます。このフィールドは空のままにします。
  5. その他の設定はデフォルトのままにし、「完了」をクリックします。

    先ほどこのチュートリアルで作成した add オペレーションも含め、「プロジェクト」ウィンドウの「Web サービス参照」ノードに新しく作成したクライアントの構造が次のように表示されます。


    「プロジェクト」ウィンドウに表示された、サーブレットの新しい Web サービスクライアント
  6. CalculatorWSServletClient」プロジェクトノードを右クリックし、「新規」>「サーブレット」を選択します。サーブレットに ClientServlet と名前を付け、org.me.calculator.client というパッケージに保存します。「完了」をクリックします。
  7. サーブレットをアプリケーションのエントリポイントにするには、「CalculatorWSServletClient」プロジェクトノードを右クリックし、「プロパティー」を選択します。「実行」プロパティーを開き、「相対 URL」フィールドに「/ClientServlet」と入力します。「了解」をクリックします。
  8. ClientServlet.java のエラーアイコンがある場合、プロジェクトノードを右クリックし、「生成物を削除して構築」を選択します。
  9. ソースエディタで、ClientServlet クラスの本体内の任意の位置に add オペレーションをドラッグします。add() メソッドはクラスのコードの末尾に表示されます。

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

    private int add(int i, int j) {
    org.me.calculator.CalculatorWS port = service.getCalculatorWSPort();
    return port.add(i, j); }
  10. processRequest メソッドの本体をコメントアウトしている行を削除します。次の行です。
        /* TODO output your page here

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

        */

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

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

    ここで、i および j の値を初期化し、add() を呼び出し、結果を出力するコードを追加します。

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

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            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>");
    
            int i = 3;
    int j = 4;
    int result = add(i, j);
    out.println("Result = " + result);
    out.println("</body>"); out.println("</html>"); } finally {
    out.close();
    }
    }
  11. 追加したコードを、例外を出力する try/catch ブロックで囲みます。
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            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 {
                int i = 3;
    int j = 4;
    int result = add(i, j);
    out.println("Result = " + result); } catch (Exception ex) { out.println("Exception: " + ex); } out.println("</body>"); out.println("</html>"); } finally {
    out.close();
    }
    }
  12. プロジェクトのノードを右クリックし、「実行」を選択します。

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

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

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

注: Oracle WebLogic 上で JSP Web アプリケーションクライアントを実行する場合は、「WebLogic での Java Server Faces 2.0 アプリケーションの実行」を参照してください。

  1. 「ファイル」>「新規プロジェクト」(Ctrl-Shift-N) を選択します。「Java Web」カテゴリから「Web アプリケーション」を選択します。プロジェクトに CalculatorWSJSPClient という名前を付けます。「完了」をクリックします。
  2. CalculatorWSJSPClient」ノードを右クリックし、「新規」>「Web サービスクライアント」を選択します。
  3. WSDL ソースとして「プロジェクト」を選択します。「参照」をクリックします。「CalculatorWSApplication」プロジェクトの「CalculatorWS」Web サービスを探します。Web サービスを選択したら、「了解」をクリックします。
    CalculatorWS サービスを表示する「Web サービスを参照」ダイアログ
  4. NetBeans IDE 7.0-7.1 では、クライアント Java アーティファクトのパッケージを選択できます。このフィールドは空のままにします。
  5. その他の設定はデフォルトのままにし、「完了」をクリックします。

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


    「プロジェクト」ウィンドウに表示された、サーブレットの新しい Web サービスクライアント
  6. 「Web サービス参照」ノードで、Web サービスを示すノードを展開します。ここで、クライアントから呼び出す add オペレーションが表示されます。
  7. 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 などの整数に変更します。catch ブロック内のコメントアウトされた TODO 行を out.println("exception" + ex); に置き換えます。

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

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


    結果を表示する JSP ページ


関連項目

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

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