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.1 が対象です

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

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

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

重要: Java EE 6 プロジェクトには、Tomcat 7.x、GlassFish Server 3.x、または Oracle WebLogic Server 12c が必要です。

Web サービスの作成

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

コンテナの選択

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

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

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

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

    Oracle WebLogic サーバーを使用するには、サーバーを IDE に登録します。また、WebLogic サーバーを使用する場合は、「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 サービスビジュアルデザイナまたは Web サービスコンテキストメニューのいずれかから開くことができます。

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

Web サービスに操作を追加するには、次の手順に従います。

  1. 次のいずれか:
    • エディタの「デザイン」ビューに切り替えます。
      Web サービスエディタの「デザイン」ビュー

    または:

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

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


    「オペレーションを追加」ダイアログ
  6. 「オペレーションを追加」ダイアログの最下部で「了解」をクリックします。エディタに戻ります。
  7. ソースコードの hello() メソッドを削除するか、ビジュアルデザイナで hello 操作を選択して「オペレーションを削除」をクリックすることによって、デフォルトの hello 操作を削除します。

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


    追加したオペレーションを表示する Web サービスのビジュアルデザイナ
  8. 「ソース」をクリックし、前の手順で作成したコードを表示します。これは、サービスを EE6 ステートレス Bean として作成したかどうかによって異なります。次のスクリーンショットの違いがわかりますか。
    結果: EE5結果: EE 6 ステートレス Bean
  9. エディタで、スケルトンの 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 Server を使用している場合、テストクライアントはありませんが、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 ページ

サンプル

「ファイル」>「新規プロジェクト」(Linux および Windows の場合は Ctrl-Shift-N、MacOS の場合は ⌘-Shift-N) を選択し、「サンプル」>「Java Web サービス」>「カリキュレータ (Java EE 6)」を選択することによって、EE6 バージョンの完全なカリキュレータサービスを開くことができます。

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

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


    「プロジェクト」ウィンドウに表示された Java SE アプリケーションの新規 Web サービスクライアント
  6. メインクラスをダブルクリックしてソースエディタで開きます。main() メソッドの下に add ノードをドラッグします。
    メインクラス本文への 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. main() メソッドのコードを、例外を出力する try/catch ブロックで囲みます。
    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. 「ファイル」>「新規プロジェクト」(Linux および Windows では Ctrl-Shift-N、MacOS では ⌘-Shift-N) を選択します。「Java Web」カテゴリから「Web アプリケーション」を選択します。プロジェクトに CalculatorWSServletClient という名前を付けます。「次へ」をクリックし、「完了」をクリックします。
  2. CalculatorWSServletClient」ノードを右クリックし、「新規」>「Web サービスクライアント」を選択します。

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

  3. プロジェクトを WSDL ソースとして選択します。「参照」をクリックします。CalculatorWSApplication プロジェクトの CalculatorWS Web サービスを参照します。Web サービスを選択したら、「了解」をクリックします。
    CalculatorWS サービスを表示する「Web サービスを参照」ダイアログ
  4. パッケージ名を選択しないでください。このフィールドは空のままにします。
  5. その他の設定はデフォルトのままにし、「完了」をクリックします。

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


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

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

    private int add(int i, int j) {
    org.me.calculator.CalculatorWS port = service.getCalculatorWSPort();
    return port.add(i, j); }
  10. processRequest() メソッドで、この行のあとに空白行をいくつか追加します。
        out.println("<h1>Servlet ClientServlet at " + request.getContextPath () + "</h1>");
  11. i および j の値を初期化し、add() を呼び出し、結果を出力するコードを追加します。追加されたコードはボールドで示されています。
    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();
    }
    }
  12. 追加されたコードを、例外を出力する 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();
    }
    }
  13. プロジェクトのノードを右クリックし、「実行」を選択します。

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

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

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

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

  1. 「ファイル」>「新規プロジェクト」(Linux および Windows では Ctrl-Shift-N、MacOS では ⌘-Shift-N) を選択します。「Java Web」カテゴリから「Web アプリケーション」を選択します。プロジェクトに CalculatorWSJSPClient という名前を付けます。「完了」をクリックします。
  2. CalculatorWSJSPClient」ノードを右クリックし、「新規」>「Web サービスクライアント」を選択します。
  3. プロジェクトを WSDL ソースとして選択します。「参照」をクリックします。CalculatorWSApplication プロジェクトの CalculatorWS Web サービスを参照します。Web サービスを選択したら、「了解」をクリックします。
    CalculatorWS サービスを表示する「Web サービスを参照」ダイアログ
  4. パッケージ名を選択しないでください。このフィールドは空のままにします。
  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 開発機能に関するご意見やご提案を送信したり、サポートを受けたり、最新の開発情報を入手したりできます。