| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| <html> |
| <head><link rel="stylesheet" href="../../../print.css" type="text/css" media="print"> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| <title>JAX-WS Webサービスについて - NetBeans IDEチュートリアル</title> |
| <meta name="KEYWORDS" content="NETBEANS, TUTORIAL, GUIDE, USER, DOCUMENTATION, WEB SERVICE, WEB SERVICES, SOAP, CLIENT, JAX-WS"> |
| <meta name="description" |
| content="This tutorial shows how to use NetBeans IDE 7.0 or later to develop a JAX-WS web service |
| and consume it in a Java class in a Java SE application, or in |
| a servlet or JSP page"> |
| <link rel="stylesheet" href="../../../netbeans.css"></head> |
| <body> |
| <h1>JAX-WS Webサービスについて</h1> |
| |
| |
| <p><a href="http://www.jcp.org/en/jsr/detail?id=224" target="_blank">Java API for XML Web Services (JAX-WS)、JSR 224</a>は、Java EEプラットフォームの重要な部分です。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ファイルのサイズが小さくなっています。</p> |
| |
| <p>このドキュメントでは、IDEを使用したJAX-WS Webサービス開発の基本を示します。Webサービスを作成した後、ネットワーク経由でWebサービスを使用する(Webサービスを「消費する」とも呼ばれる)、3つの異なるWebサービス・クライアントを記述します。3つのクライアントとは、Java SEアプリケーションのJavaクラス、サーブレット、およびWebアプリケーションのJSPページです。クライアントに焦点を当てた、さらに詳細なチュートリアルは、<a href="./client.html">JAX-WS Webサービス・クライアントの開発</a>です。</p> |
| |
| |
| |
| <p><b>目次</b></p> |
| |
| <img alt="このページの内容は、NetBeans IDE 7.2、7.3、7.4および8.0に適用されます" class="stamp" src="../../../images_www/articles/73/netbeans-stamp-80-74-73.png" title="このページの内容は、NetBeans IDE 7.2、7.3、7.4および8.0に適用されます"> |
| |
| <ul><li><a href="#Exercise_1">Webサービスの作成</a></li> |
| <li><a href="#Exercise_2">Webサービスの設計</a></li> |
| <li><a href="#Exercise_2_1">Webサービスのデプロイおよびテスト</a></li> |
| <li><a href="#samples">サンプル</a></li> |
| <li> |
| Webサービスの使用 |
| <ul><li><a href="#Exercise_3_1">Java SEアプリケーションのJavaクラス</a></li> |
| <li><a href="#Exercise_3_2">Webアプリケーションのサーブレット</a></li> |
| <li><a href="#Exercise_3_3">WebアプリケーションのJSPページ</a></li> |
| </ul> |
| </ul> |
| |
| |
| |
| |
| <p><b>このチュートリアルに従うには、次のソフトウェアとリソースが必要です。</b></p> |
| |
| <table> |
| <tbody> |
| <tr> |
| <th class="tblheader" scope="col">ソフトウェアまたはリソース</th> |
| <th class="tblheader" scope="col">必須バージョン</th> |
| </tr> |
| <tr> |
| <td class="tbltd1"><a href="https://netbeans.org/downloads/index.html" target="_blank">NetBeans IDE</a></td> |
| <td class="tbltd1">Java EEダウンロード・バンドル</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html" target="_blank">Java Development Kit (JDK)</a></td> |
| <td class="tbltd1">JDK 7またはJDK 8<br></td> |
| </tr> |
| <tr> |
| <td class="tbltd1">Java EE互換のWebサーバーまたはアプリケーション・サーバー</td> |
| <td class="tbltd1"> |
| GlassFish Server Open Source Edition <br> Oracle WebLogic Server</td> |
| </tr> |
| |
| </tbody> |
| </table> |
| |
| <p class="notes"><strong>注意: </strong>GlassFishサーバーは、NetBeans IDEのJava EEディストリビューションとともにインストールできます。または、<a href="https://glassfish.java.net/download.html">GlassFishサーバーのダウンロード・ページ</a>か<a href="http://tomcat.apache.org/download-60.cgi" target="_blank">Apache Tomcatのダウンロード・ページ</a>からダウンロードすることもできます。</p> |
| <p class="alert"><strong>重要: </strong>Java EEプロジェクトには、GlassFish ServerまたはOracle WebLogic Server 12cが必要です。 |
| </p> |
| <p class="alert">バンドルされているTomcat Webサーバーは、Java EEに完全に準拠したWebサーバーではありません。ただし、一部のJava EE機能をサポートするようにTomcat 7.x Webサーバーを構成できます。TomcatにJava EEのサポートを追加する方法の詳細は、<a href="http://openejb.apache.org/" target="_blank">Apache TomEE project</a>を参照してください。</p> |
| <!-- ===================================================================================== --> |
| <h2><a name="Exercise_1"></a> |
| <!--Exercise 1: --> |
| Webサービスの作成</h2> |
| <p>この課題の目標は、使用予定のデプロイメント・コンテナに適したプロジェクトを作成することです。プロジェクトが完成した後、その中にWebサービスを作成します。</p> |
| <div class="indent"> |
| <h3 class="tutorial">コンテナの選択</h3> |
| <p>WebサービスはWebコンテナまたはEJBコンテナにデプロイできます。これは、選択する実装によって変わります。Java EEアプリケーションを作成している場合、EJBを直接Webアプリケーションに配置できるため、どのような場合でもWebコンテナを使用します。たとえばTomcat Webサーバーにデプロイする予定の場合、Tomcat WebサーバーにはWebコンテナしかないため、EJBモジュールではなくWebアプリケーションを作成します。</p> |
| |
| <ol> |
| |
| <li> 「ファイル」>「新規プロジェクト」(LinuxおよびWindowsでは[Ctrl]-[Shift]-[N]、MacOSでは[⌘]-[Shift]-[N])を選択します。「Java Web」カテゴリから「Webアプリケーション」を選択するか、「Java EE」カテゴリから「EJBモジュール」を選択します。 |
| <p class="notes">JAX-WS WebサービスをMavenプロジェクト内で作成できます。「ファイル」>「新規プロジェクト」(LinuxおよびWindowsの場合は[Ctrl]-[Shift]-[N]、MacOSの場合は[⌘]-[Shift]-[N])を選択し、「Maven」カテゴリから「Maven Webアプリケーション」または「Maven EJBモジュール」を選択します。NetBeansでMavenをまだ使用したことがない場合は、<a href="http://wiki.netbeans.org/MavenBestPractices" target="_blank">Mavenのベスト・プラクティス</a>を参照してください。 |
| </li> |
| |
| <li>プロジェクトに<tt>CalculatorWSApplication</tt>という名前を付けます。プロジェクトの場所を選択します。「次」をクリックします。 |
| <li>サーバーとJava EEバージョンを選択し、「終了」をクリックします。 |
| <p class="notes">Oracle WebLogicサーバーを使用するには、<a href="../web/jsf-jpa-weblogic.html#01">サーバーをIDEに登録します</a>。また、WebLogicサーバーを使用する場合は、<a href="../javaee/weblogic-javaee-m1-screencast.html">Oracle WebLogicへのWebアプリケーションのデプロイ</a>のスクリーンキャストを視聴してください。</p> </li> |
| </ol> |
| <h3 class="tutorial">JavaクラスからのWebサービスの作成</h3> |
| <ol> |
| |
| <li>「<tt>CalculatorWSApplication</tt>」ノードを右クリックし、「新規」>「Webサービス」を選択します。</li> |
| |
| <li>Webサービスに<tt>CalculatorWS</tt>という名前を付け、「パッケージ」に「<tt>org.me.calculator</tt>」と入力します。「Webサービスを新規に作成」を選択したままにします。</li> |
| |
| <li>GlassFishまたはWebLogicでJava EEプロジェクトを作成する場合は、「ステートレス・セッションBeanとしてWebサービスを実装」を選択します。 <br> <img alt="Beanのオプションが表示された、EE用の新規Webサービス・ウィザード" class="margin-around b-all" src="../../../images_www/articles/72/websvc/jax-ws/generate-ws-ee6.png"></li> |
| <li>「終了」をクリックします。「プロジェクト」ウィンドウに新しいWebサービスの構造が表示され、エディタ領域にソース・コードが表示されます。<br> |
| </li> |
| </ol> |
| </div> |
| |
| <!-- ===================================================================================== --> |
| <h2><a name="Exercise_2"></a> |
| <!--Exercise 2: --> |
| Webサービスへの操作の追加</h2> |
| |
| <p>この課題の目標は、クライアントから受け取った2つの数字を追加する操作をWebサービスに追加することです。NetBeans IDEは、操作をWebサービスに追加するダイアログを提供します。このダイアログは、Webサービス・ビジュアル・デザイナまたはWebサービス・コンテキスト・メニューのいずれかから開くことができます。 </p> |
| <p class="alert"><b>警告:</b> ビジュアル・デザイナはMavenプロジェクトでは使用できません。</p> |
| <p><strong>Webサービスに操作を追加するには:</strong></p> |
| <ol> |
| |
| <li>次のいずれか:<ul> |
| <li>エディタの「デザイン」ビューに変更します。<br> <img alt="Webサービス・エディタの「デザイン」ビュー" class="margin-around b-all" src="../../../images_www/articles/72/websvc/jax-ws/design-view.png"> </li></ul> |
| <p>または:</p> |
| <ul> |
| <li>「プロジェクト」ウィンドウからWebサービスのノードを見つけます。そのノードを右クリックします。コンテキスト・メニューが開きます。<br> <img alt="「操作の追加」項目が強調表示されたWebサービス・ノードのコンテキスト・メニュー" class="margin-around b-right b-bottom" src="../../../images_www/articles/72/websvc/jax-ws/add-op-cx-menu-item.png"></li></ul></li> |
| <li>ビジュアル・デザイナまたはコンテキスト・メニューのいずれかで、「操作の追加」をクリックします。「操作の追加」ダイアログが開きます。</li> |
| <li>「操作の追加」ダイアログ・ボックスの上の部分で、「名前」に「<tt>add</tt>」、「戻り値の型」ドロップダウン・リストに「<tt>int</tt>」と入力します。</li> |
| <li>「操作の追加」ダイアログ・ボックスの下の部分で、「追加」をクリックして<tt>int</tt>型の<tt>i</tt>という名前のパラメータを作成します。</li> |
| <li>再度「追加」をクリックし、<tt>int</tt>型の<tt>j</tt>というパラメータを作成します。 |
| <p>次のようになります。</p> |
| <br><img alt="「操作の追加」ダイアログ" class="margin-around b-all" src="../../../images_www/articles/72/websvc/jax-ws/jaxws-60-add-operation.png"></li> |
| <li>「操作の追加」ダイアログ・ボックスの最下部で「OK」をクリックします。エディタに戻ります。</li> |
| <li>ソース・コードの<tt>hello()</tt>メソッドを除去するか、ビジュアル・デザイナで<tt>hello</tt>操作を選択して「操作を除去」をクリックすることによって、デフォルトの<tt>hello</tt>操作を除去します。 |
| |
| <p>ビジュアル・デザイナでは次のように表示されます。</p> |
| |
| <br><img alt="追加した操作が表示されたWebサービスのビジュアル・デザイナ" class="margin-around b-all" src="../../../images_www/articles/72/websvc/jax-ws/design-view-with-op.png" title="追加した操作が表示されたWebサービスのビジュアル・デザイナ"></li> |
| |
| <li>「ソース」をクリックし、前述の手順で作成したコードを表示します。これは、サービスをJava EEステートレスBeanとして作成したかどうかによって異なります。次のスクリーンショットの違いがわかりますか。(ステートレスBeanとして実装されていないJava EE 6サービスやJava EE 7サービスはJava EE 5サービスに似ています。)<br> <img alt="結果: EE5" class="margin-around b-top b-left" src="../../../images_www/articles/72/websvc/jax-ws/jaxws-60-source.png"> <img alt="結果: EE 6ステートレスBean" class="margin-around b-all" src="../../../images_www/articles/72/websvc/jax-ws/stateless-ejb-code1.png"> |
| <p class="notes"><strong>注意:</strong>NetBeans IDE 7.3およおび7.4では、生成された<tt>@WebService</tt>注釈に、次のサービス名が明示的に指定されていることがわかります。<br> <tt>@WebService(serviceName = "CalculatorWS")</tt>。</p> |
| </li> |
| <li>エディタで、スケルトンの<tt>add</tt>操作を次のように拡張します(変更部分は太字で表示)。 |
| |
| <pre class="examplecode"> @WebMethod |
| public int add(@WebParam(name = "i") int i, @WebParam(name = "j") int j) { |
| <b>int k = i + j;</b> |
| return <b>k</b>; |
| }</pre></li> |
| </ol> |
| |
| <p>前出のコードからわかるように、このWebサービスは単に2つの数字を受け取り、合計を返します。次の項では、IDEを使用してWebサービスをテストします。 |
| |
| |
| |
| <!-- ======================================================================================== --> |
| |
| <h2 class="tutorial"><a name="Exercise_2_1"></a>Webサービスのデプロイおよびテスト</h2> |
| |
| <p>Webサービスをサーバーにデプロイした後、サーバーにテスト・クライアントがある場合はIDEを使用してサーバーのテスト・クライアントを開くことができます。GlassFishサーバーとWebLogicサーバーにはテスト・クライアントがあります。 </p> |
| <p>Tomcat Webサーバーを使用している場合は、テスト・クライアントがありません。プロジェクトを実行するだけで、Tomcat Webサービス・ページが開くかどうかを確認できます。この場合は、プロジェクトを実行する前に、Webサービスをアプリケーションのエントリ・ポイントにする必要があります。Webサービスをアプリケーションのエントリ・ポイントにするには、「CalculatorWSApplication」プロジェクト・ノードを右クリックし、「プロパティ」を選択します。「実行」プロパティを開き、「相対URL」フィールドに「<tt>/CalculatorWS</tt>」と入力します。「OK」をクリックします。プロジェクトを実行するには、プロジェクト・ノードを再度右クリックし、「実行」を選択します。</p> |
| <p><b>GlassFishまたはWebLogicサーバーへ正常にデプロイメントされていることをテストする手順:</b></p> |
| |
| <ol> |
| <li>プロジェクトを右クリックし、「デプロイ」を選択します。アプリケーション・サーバーが開始され、アプリケーションがビルドされて、サーバーにデプロイされます。これらの操作の進行状況は、「出力」ビューの「CalculatorWSApplication (run-deploy)」および「GlassFish Server 3」タブまたは「Tomcat」タブで確認できます。</li> |
| <li>IDEの「プロジェクト」タブで、CalculatorWSApplicationプロジェクトの「Webサービス」ノードを展開します。「CalculatorWS」ノードを右クリックし、「Webサービスをテスト」を選択します。<br> <img alt="「Webサービスをテスト」コンテキスト・メニュー・オプションが表示された「プロジェクト」タブ" class="margin-around b-all" src="../../../images_www/articles/72/websvc/jax-ws/jax-ws-testws.png"> |
| <p>GlassFishサーバーにWebアプリケーションをデプロイした場合、テスター・ページがブラウザで開きます。Tomcat Webサーバーの場合およびEJBモジュールのデプロイメントの場合、状況は異なります。</p> |
| |
| <ul> |
| <li>GlassFishサーバーにデプロイした場合、次のようにテスター・ページに2つの数字を入力します。<br><img alt="サービスがGlassFishサーバーに正常にデプロイされた場合のWebサービスのテスター・ページ" class="margin-around b-all" src="../../../images_www/articles/72/websvc/jax-ws/jax-ws-tester.png"> |
| <p>2つの数字の合計が次のように表示されます。</p> |
| <br><img alt="Webサービスのテスト結果を表示するWebページ" class="margin-around b-all" src="../../../images_www/articles/72/websvc/jax-ws/jax-ws-tester2.png"></li> |
| </ul> |
| </li> |
| </ol> |
| |
| <!-- ======================================================================================== --> |
| |
| <h2><a name="samples">サンプル</a></h2> |
| <p>「ファイル」>「新規プロジェクト」(LinuxおよびWindowsの場合は[Ctrl]-[Shift]-[N]、MacOSの場合は[⌘]-[Shift]-[N])を選択し、「サンプル」>「Webサービス」>「カリキュレータ(EE 6)」を選択することによって、Java EEステートレスBeanバージョンの完全なカリキュレータ・サービスを開くことができます。</p> |
| <p>Maven CalculatorサービスとMaven Calculatorクライアントは、「サンプル」>「Maven」から使用できます。</p> |
| |
| <h2 class="tutorial"><a name="Exercise_3"></a>Webサービスの使用</h2> |
| <p class="tutorial">作成したWebサービスのデプロイが完了したので、次はWebサービスの<tt>add</tt>メソッドを使用するクライアントを作成する必要があります。ここでは、Java SEアプリケーションのJavaクラス、サーブレット、およびWebアプリケーションのJSPページという3つのクライアントを作成します。</p> |
| |
| <p class="notes"><b>注意:</b> クライアントに焦点を当てた、さらに詳細なチュートリアルは、<a href="../../../kb/docs/websvc/client.html">JAX-WS Webサービス・クライアントの開発</a>です。</p> |
| |
| <div class="indent"> |
| <h3 class="tutorial"><a name="Exercise_3_1"></a>クライアント1: Java SEアプリケーションのJavaクラス</h3> |
| |
| <p>この項では、標準のJavaアプリケーションを作成します。アプリケーションの作成に使用するウィザードでJavaクラスも作成できます。続いてIDEのツールで、クライアントを作成し、このチュートリアルの最初に作成したWebサービスを使用します。</p> |
| <ol> |
| |
| <li>「ファイル」>「新規プロジェクト」(LinuxおよびWindowsでは[Ctrl]-[Shift]-[N]、MacOSでは[⌘]-[Shift]-[N])を選択します。「Java」カテゴリから「Javaアプリケーション」を選択します。プロジェクトに<tt>CalculatorWS_Client_Application</tt>という名前を付けます。「メイン・クラスの作成」を選択状態にし、その他のデフォルト設定はそのまま受け入れます。「終了」をクリックします。</li> |
| |
| <li>「<tt>CalculatorWS_Client_Application</tt>」ノードを右クリックし、「新規」>「Webサービス・クライアント」を選択します。新規Webサービス・クライアント・ウィザードが開きます。 </li> |
| |
| <li>プロジェクトをWSDLソースとして選択します。「参照」をクリックします。CalculatorWSApplicationプロジェクトのCalculatorWS Webサービスを参照します。Webサービスを選択した後、「OK」をクリックします。<br> <img alt="CalculatorWSを表示する「Webサービスを参照」ダイアログ" class="margin-around b-all" src="../../../images_www/articles/80/websvc/jax-ws/browse-ws.png"></li> |
| |
| <li>パッケージ名を選択しないでください。このフィールドは空のままにします。<br> <img alt="パッケージ名を示す新規Webサービス・クライアント・ウィザード" class="margin-around b-all" src="../../../images_www/articles/80/websvc/jax-ws/javaclient-pkg.png"></li> |
| <li>その他の設定はデフォルトのままにし、「終了」をクリックします。 |
| <p>「プロジェクト」ウィンドウに新しいWebサービス・クライアントが表示され、作成した<tt>add</tt>メソッドのノードが追加されています。</p> |
| <br><img alt="「プロジェクト」ウィンドウに表示されたJava SEアプリケーションの新規Webサービス・クライアント" class="margin-around b-right b-top" src="../../../images_www/articles/72/websvc/jax-ws/ws-ref-in-client-project.png"> </li> |
| <li>メイン・クラスをダブルクリックしてソース・エディタで開きます。<tt>main()</tt>メソッドの下に<tt>add</tt>ノードをドラッグします。<br><img alt="メイン・クラス本文へのadd操作のドラッグ・アンド・ドロップ" class="margin-around b-all" src="../../../images_www/articles/72/websvc/jax-ws/dnd-add.png"> |
| <p> 次のようになります。</p> |
| |
| <pre class="examplecode">public static void main(String[] args) { |
| // TODO code application logic here |
| } |
| 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); |
| }</pre> |
| <p><b>注意:</b> 別の方法として、<tt>add</tt>ノードをドラッグするかわりに、エディタ上で右クリックして「コードを挿入」>「Webサービス操作をコール」を選択することもできます。 </li> |
| <li><tt>main()</tt>メソッド本文で、TODOコメントを、<tt>i</tt>および<tt>j</tt>の値を初期化し、<tt>add()</tt>をコールし、結果を出力するコードに置き換えます。 |
| <pre class="examplecode">public static void main(String[] args) {<br> int i = 3;<br> int j = 4;<br> int result = add(i, j);<br> System.out.println("Result = " + result); |
| }</pre></li> |
| <li><tt>main()</tt>メソッドのコードを、例外を出力するtry/catchブロックで囲みます。 |
| <pre class="examplecode">public static void main(String[] args) {<br> try {<br> int i = 3;<br> int j = 4;<br> int result = add(i, j);<br> System.out.println("Result = " + result);<br> } catch (Exception ex) {<br> System.out.println("Exception: " + ex);<br> } |
| }</pre> |
| </li> |
| <li>プロジェクトのノードを右クリックし、「実行」を選択します。 |
| <p>「出力」ウィンドウで次のような合計が表示されます。</p> |
| <pre class="examplecode"> compile: |
| run: |
| Result = 7 |
| BUILD SUCCESSFUL (total time: 1 second)</pre> |
| </li> |
| </ol> |
| |
| <h3><a name="Exercise_3_2"></a>クライアント2: Webアプリケーションのサーブレット</h3> |
| |
| |
| <p>この項では、新しいWebアプリケーションを作成し、続いてサーブレットを作成します。次にサーブレットを使用して、このチュートリアルの最初で作成したWebサービスを使用します。 |
| <ol> |
| |
| <li> 「ファイル」>「新規プロジェクト」(LinuxおよびWindowsでは[Ctrl]-[Shift]-[N]、MacOSでは[⌘]-[Shift]-[N])を選択します。「Java Web」カテゴリから「Webアプリケーション」を選択します。プロジェクトに<tt>CalculatorWSServletClient</tt>という名前を付けます。「次」をクリックし、「終了」をクリックします。</li> |
| |
| <li>「<tt>CalculatorWSServletClient</tt>」ノードを右クリックし、「新規」>「Webサービス・クライアント」を選択します。 |
| |
| <p>新規Webサービス・クライアント・ウィザードが開きます。</p> |
| </li> |
| |
| <li>WSDLソースとしてプロジェクトを選択し、「参照」をクリックして「Webサービスを参照」ダイアログ・ボックスを開きます。</li> |
| <li>CalculatorWSApplicationプロジェクトでCalculatorWS Webサービスを選択します。「OK」をクリックして、「Webサービスを参照」ダイアログ・ボックスを閉じます。<br> <img alt="CalculatorWSを表示する「Webサービスを参照」ダイアログ" class="margin-around b-all" src="../../../images_www/articles/80/websvc/jax-ws/browse-ws.png"></li> |
| <li>新規Webサービス・クライアント・ウィザードでパッケージ名が空白であることを確認し、他の設定はデフォルト値のままにします。「終了」をクリックします。 |
| |
| <p>先ほどこのチュートリアルで作成した<tt>add</tt>操作も含め、「プロジェクト」ウィンドウの「Webサービス参照」ノードに新しく作成したクライアントの構造が次のように表示されます。</p> |
| </li> |
| <li>「<tt>CalculatorWSServletClient</tt>」プロジェクト・ノードを右クリックし、「新規」>「サーブレット」を選択します。サーブレットに<tt>ClientServlet</tt>と名前を付け、<tt>org.me.calculator.client</tt>というパッケージに保存します。「終了」をクリックします。 |
| <li>サーブレットをアプリケーションのエントリ・ポイントにするには、「CalculatorWSServletClient」プロジェクト・ノードを右クリックし、「プロパティ」を選択します。「実行」プロパティを開き、「相対URL」フィールドに「<tt>/ClientServlet</tt>」と入力します。「OK」をクリックします。 |
| <li><tt>ClientServlet.java</tt>のエラー・アイコンがある場合、プロジェクト・ノードを右クリックし、「消去してビルド」を選択します。 |
| |
| <li><tt>processRequest()</tt>メソッドで、この行の後に空白行をいくつか追加します。 |
| <pre class="examplecode"> out.println("<h1>Servlet ClientServlet at " + request.getContextPath () + "</h1>");</pre> |
| </li> |
| <li>ソース・エディタで、<tt>add</tt>操作を<tt>ClientServlet</tt>クラスの本文の任意の場所にドラッグします。<tt>add()</tt>メソッドがクラス・コードの末尾に表示されます。 |
| |
| <p class="notes"><b>注意:</b> 別の方法として、<tt>add</tt>ノードをドラッグするかわりに、エディタ上で右クリックして「コードを挿入」>「Webサービス操作をコール」を選択することもできます。</p> |
| <pre class="examplecode">private int add(int i, int j) {<br> org.me.calculator.CalculatorWS port = service.getCalculatorWSPort();<br> return port.add(i, j); |
| }</pre> |
| </li> |
| <li><tt>i</tt>および<tt>j</tt>の値を初期化し、<tt>add()</tt>をコールし、結果を出力するコードを追加します。追加されたコードは<b>太字</b>で示されています。 |
| |
| <pre class="examplecode">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>"); |
| |
| <strong> int i = 3;<br> int j = 4;<br> int result = add(i, j);<br> out.println("Result = " + result);</strong> |
| |
| out.println("</body>"); |
| out.println("</html>"); |
| |
| } finally { <br> out.close();<br> }<br>}</pre> |
| </li> |
| <li>追加されたコードを、例外を出力するtry/catchブロックで囲みます。 |
| <pre class="examplecode">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>"); |
| <strong>try {</strong> |
| int i = 3;<br> int j = 4;<br> int result = add(i, j);<br> out.println("Result = " + result); |
| <strong>} catch (Exception ex) { |
| out.println("Exception: " + ex); |
| }</strong> |
| out.println("</body>"); |
| out.println("</html>"); |
| |
| } finally { <br> out.close();<br> }<br>}</pre> |
| </li> |
| <li>プロジェクトのノードを右クリックし、「実行」を選択します。 |
| <p>サーバーが起動し、アプリケーションがビルドおよびデプロイされ、ブラウザが開いて次のように計算結果を表示します。<br><img alt="「プロジェクト」ウィンドウに表示されたサーブレットの新規Webサービス・クライアント" class="margin-around b-all" src="../../../images_www/articles/72/websvc/jax-ws/jaxws-60-webclient.png"> </li> |
| </ol> |
| |
| <h3><a name="Exercise_3_3"></a>クライアント3: WebアプリケーションのJSPページ</h3> |
| <p>この項では、新しいWebアプリケーションを作成した後、Webアプリケーション・ウィザードで作成したデフォルトのJSPページでWebサービスを使用します。</p> |
| <p class="notes"><b>注意:</b> JSP Webアプリケーション・クライアントをOracle WebLogic上で実行する場合は、<a href="../web/jsf-jpa-weblogic.html">WebLogicでのJava Server Faces 2.0アプリケーションの実行</a>を参照してください。</p> |
| <ol> |
| <li> 「ファイル」>「新規プロジェクト」(LinuxおよびWindowsでは[Ctrl]-[Shift]-[N]、MacOSでは[⌘]-[Shift]-[N])を選択します。「Java Web」カテゴリから「Webアプリケーション」を選択します。プロジェクトに<tt>CalculatorWSJSPClient</tt>という名前を付けます。「次」をクリックし、「終了」をクリックします。</li> |
| <li>プロジェクト・ノードの下でWeb Pagesノードを展開して、<tt>index.html</tt>を削除します。</li> |
| <li><tt>Web Pages</tt>ノードを右クリックして、ポップアップ・メニューで「新規」>「JSP」を選択します。 |
| <p>ポップアップ・メニューに「JSP」がない場合は、「新規」>「その他」を選択し、新規ファイル・ウィザードの「Web」カテゴリで「JSP」を選択します。</p></li> |
| <li>新規ファイル・ウィザードでJSPファイルの名前に<strong>index</strong>と入力します。「終了」をクリックします。</li> |
| <li>「<tt>CalculatorWSJSPClient</tt>」ノードを右クリックし、「新規」>「Webサービス・クライアント」を選択します。</li> |
| |
| <li>プロジェクトをWSDLソースとして選択します。「参照」をクリックします。CalculatorWSApplicationプロジェクトのCalculatorWS Webサービスを参照します。Webサービスを選択した後、「OK」をクリックします。<br> <img alt="CalculatorWSを表示する「Webサービスを参照」ダイアログ" class="margin-around b-all" src="../../../images_www/articles/80/websvc/jax-ws/browse-ws.png"></li> |
| <li>パッケージ名を選択しないでください。このフィールドは空のままにします。</li> |
| <li>その他の設定はデフォルトのままにし、「終了」をクリックします。 |
| |
| <p>次のように、「プロジェクト」ウィンドウに新しいWebサービス・クライアントが表示されます。</p> |
| |
| <img alt="「プロジェクト」ウィンドウに表示されたサーブレットの新規Webサービス・クライアント" class="margin-around b-all" src="../../../images_www/articles/72/websvc/jax-ws/ws-ref-in-jsp-client.png"></li> |
| |
| <li>「Webサービス参照」ノードで、Webサービスを示すノードを展開します。ここで、クライアントから呼び出す<tt>add</tt>操作が表示されます。</li> |
| |
| <li><tt>add</tt>操作をクライアントの<tt>index.jsp</tt>ページにドラッグし、H1タグの下にドロップします。次のように、サービスの操作を呼び出すコードが<tt>index.jsp</tt>ページに生成されます。 |
| |
| <pre class="examplecode"><% |
| 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 |
| } |
| %></pre> |
| |
| <p><tt>i</tt>および<tt>j</tt>の値を0から3や4などの整数に変更します。catchブロック内のコメントアウトされたTODO行を<tt>out.println("exception" +ex);</tt>に置き換えます。</p> |
| </li> |
| |
| |
| <li>プロジェクトのノードを右クリックし、「実行」を選択します。 |
| <p>サーバーが起動していない場合は起動します。アプリケーションがビルドおよびデプロイされ、ブラウザが開き、計算結果が表示されます。</p> |
| |
| <img alt="結果を表示するJSPページ" class="margin-around b-all" src="../../../images_www/articles/80/websvc/jax-ws/jax-ws-project-jsp-result.png"></li> |
| </ol> |
| </div> |
| <br> |
| <div class="feedback-box" ><a href="/about/contact_form.html?to=3&subject=Feedback:%20JAX-WS%20Services%20in%20NetBeans%20IDE">このチュートリアルに関するご意見をお寄せください</a></div> |
| <br style="clear:both;"> |
| <!-- ======================================================================================= --> |
| <h2><a name="seealso"></a>関連項目</h2> |
| <p>NetBeans IDEを使用したJava EEアプリケーションの開発方法の詳細は、次のリソースを参照してください。 |
| </p> |
| <ul> |
| |
| <li><a href="./client.html">JAX-WS Webサービス・クライアントの開発</a></li> |
| |
| <li><a href="./rest.html">RESTful Webサービスについて</a></li> |
| <li><a href="./wsit.html">高度なWebサービス相互運用性</a></li> |
| <li><a href="../../../kb/trails/web.html">Webサービスの学習</a></li> |
| |
| </ul> |
| <p><a href="../../../community/lists/top.html">nbj2ee@netbeans.orgメーリング・リスト</a>に登録することによって、NetBeans IDE Java EE開発機能に関するご意見やご提案を送信したり、サポートを受けたり、最新の開発情報を入手したりできます。</p> |
| </body> |