![]() ![]() ![]() ![]() ![]() |
チュートリアル : WEBサービスの操作 05/19/03 09:50:45 |
このレッスンでは、WebサービスのクライアントであるJ2EE Webアプリケーションを作成する方法について説明します。 Webアプリケーションは、単一のJSPページであり、 そのページのJavaBeanには、リモートオブジェクトをインスタンス化し、 レッスン 2, Webサービスの作成からCalculator Webサービスを呼び出すメソッドがあります。
注記: このレッスンで作成するWARを配備するには、J2EEアプリケーションサーバを実行する必要があります。 レッスン 2, Webサービスの作成で配備するWebサービスも実行されている必要があります。
この節では、Calculator Webサービスを呼び出すページを持つWebアプリケーションのWARプロジェクトを作成します。
前のレッスンでは、Workbenchでプロジェクトディレクトリを作成してから、プロジェクトを定義しました。 このレッスンでは、Workbenchによりプロジェクトルートディレクトリが作成されるようにします。
このエクササイズでは、Workbenchを開始しNew Projectウィザードを使用して、Webアプリケーションのプロジェクトを作成します。
Workbenchを開始します。 Windowsの[スタート]メニューからNovell exteNd Workbenchのショートカットを使用できます。
または
Workbenchがすでに実行されており、プロジェクトが開いている場合は、メニューから[File]>[Close Project]の順に選択します。 開いているファイルを閉じるよう求められた場合、[Yes]をクリックします。
New Projectウィザードで、[WAR]を選択してから[OK]をクリックします。
[Project Location]テキストボックスで、CalcWARClientというプロジェクトルートディレクトリのフルパスを指定します。
「c:\WorkbenchProjects\CalcWARClient」のように入力するか、省略記号をクリックして、[Choose Directory]ダイアログボックスでペアレントディレクトリを選択してから、 [Project Location]テキストボックスで、選択したディレクトリの後に新しいディレクトリ名を入力できます。
入力すると、ダイアログボックスの残りのフィールドが自動的に入力されます。
[Project J2EE Version]フィールドで、[J2EE 1.2 (WAR 2.2)]を指定して、J2EE 1.2または1.3をサポートしている任意のサーバでアプリケーションが実行されるようにします。
ウィザードにより、プロジェクトルートディレクトリおよびWEB-INFディレクトリを作成するかどうか尋ねるメッセージが表示されたら、[Yes]をクリックします。
ウィザードにより、プロジェクト情報が要約されます。
ナビゲーションペインで、[Project]タブに新しいプロジェクトが表示されます。
Webサービスクライアントでは、jbroker-web.jarのクラスおよびSOAPメッセージ処理のサポートJARを使用します。 このエクササイズでは、これらのJARをランタイム時のアクセス用にアーカイブに追加し、コンパイル時のアクセス用にプロジェクトクラスパスに追加します。
[Select Contents]ダイアログボックスで、Workbench-install-directory/compilelibディレクトリに移動した後、次のファイルを選択して[Open]をクリックします。
[Add to Project]ダイアログボックスにより、各ファイルの情報を1つずつ入力するよう求められます。
jaxrpc-api.jarの情報を求められた場合、[Add the file to the archive at this location]をオンにします。 テキストボックスに、「WEB-INF/lib/jaxrpc-api.jar」と入力します。 その後、[OK]をクリックします。
jbroker-web.jarの情報を求められた場合、[Add the file to the archive at this location]をオンにします。 テキストボックスに、「WEB-INF/lib/jbroker-web.jar」と入力します。 その後、[OK]をクリックします。
saaj-api.jarの情報を求められた場合、[Add the file to the archive at this location]をオンにします。 テキストボックスに、「WEB-INF/lib/saaj-api.jar」と入力します。 その後、[OK]をクリックします。
xerces.jarの情報を求められた場合、[Add the file to the archive at this location]をオンにします。 テキストボックスに、「WEB-INF/lib/xerces.jar」と入力します。 その後、[OK]をクリックします。
これで、アーカイブのWEB-INF/libディレクトリに、JARが含まれます。
[Add to Classpath]ダイアログボックスで、Workbench-install-directory/compilelibディレクトリをもう一度検索し、次のファイルを選択して[Open]、[OK]の順にクリックします。
[Classpath/Dependencies]タブは、次のようになります。
Calculator WARクライアントがCalculator Webサービスにアクセスするためには、次のような複数のクラスが必要となります。
レッスン 2, Webサービスの作成または レッスン 3, Webサービスのクライアントアプリケーションの作成のレッスンを実行した場合、クライアントファイルは、すでにプロジェクトのcalcパッケージに存在します。 また、それらのレッスンでは、各ファイルで処理される内容についても説明しています。 ファイルをこのプロジェクトにコピーしたり、現在の場所から追加したりすることもできますが、代わりに レッスン 2, Webサービスの作成からのWSDLファイルを使用して、クライアントファイルを再生成します。この方法が迅速で簡単であるためです。
このエクササイズでは、WebサービスのWSDLファイルからクライアントコードを生成します。 このエクササイズは、 レッスン 3, Webサービスのクライアントアプリケーションの作成で行った手順を要約したものです。 Web Serviceウィザードによる結果の画像や情報については、そのレッスンを参照してください。
ご使用のシステムツールを使用して、ファイルCalculatorImplWS.wsdlをCalcWARClientディレクトリにコピーします。 このファイルは、c:\WorkbenchProjects\CalculatorWS\srcなどのように、 レッスン 2, Webサービスの作成でのプロジェクトのsrcディレクトリにあります。
ヒント: レッスン 2, Webサービスの作成のレッスンを実行しておらず、他のユーザによ り配備されたCalculator Webサービスを使用する場合は、Workbench-install- directory\docs\tutorial\ TutorialFiles\webservicesディレクトリからファイルを取得でき ます。 このファイルを使用する場合、ファイルを開き、ファイルの最後のsoap:address要 素でURLを編集し、Calculator Webサービスの配備先となるURLを指定することが大切で す。
[New File]ダイアログボックスで、[Web Services]タブをクリックしてから、[Existing Web Service]を選択して[OK]をクリックします。
Workbenchに、Web Serviceウィザードのプロジェクトの場所を指定するパネルが表示されます。
WSDLファイル選択パネルが表示されたら、[CalculatorImplWS.wsdl]を選択して、[Next]をクリックします。
クラス生成およびSOAPオプションパネルが表示されます。
これで、Calculator Webサービスを呼び出すためのクライアントコードが、プロジェクトに含まれます。
フォームを使用したJSPページでは、付随のJavaBeanを使用して、フォームフィールドでのデータを管理します。 JavaBeanのプロパティには、入力した値が保存され、次回の処理でこの値がBeanでのメソッドに対して使用できるようになります。
このレッスンでの単純なアプリケーションでは、この方法を使用します。 ユーザが、データを割り当てたフォームを送信すると、関連付けられたJavaBeanにより、送信された値が保存されます。 JSPページを再表示すると、データが送信されたかどうかテストします。 データが送信された場合、Calculator Webサービスを呼び出すJavaBeanのメソッドを呼び出します。 アプリケーションが「マジックナンバー」を正常に計算すると、2番目のJSPフラグメントが元のページに含まれ、結果が表示されます。
ファイル |
説明 |
---|---|
magicnumber.jsp |
入力フォームを使用したアプリケーションのメインページ |
MagicNumberBean.java |
magicnumber.jspからのデータを処理するJavaBean |
calcnumber.jsp |
計算された結果をincludeディレクティブによってmagicnumber.jspに表示するJSPフラグメント |
このエクササイズでは、JSPウィザードを使用して新しいページを作成します。
Workbenchで、メニューから[File]>[New]の順に選択します。
[New File]ダイアログボックスで、[JSP]を選択して[OK]をクリックします。
Workbenchにより、JSPウィザードが表示されます。
オプション |
値 |
---|---|
JSP name |
magicnumber (jsp拡張子は指定しない) |
Page title |
Magic Number |
Content type |
HTML (デフォルト) |
Template |
Standard JSP template (デフォルト) |
他のオプション |
Use session、Thread safe、Form-based page |
これで、最初のパネルは次のようになります。
プロジェクトおよびアーカイブでのファイルの配置場所を指定します。
[Base directory]では、c:\WorkbenchProjects\CalcWARClient\jspsなどのように、新しいjspsディレクトリのフルパスを指定します。 ドロップダウンリストから別のプロジェクトディレクトリパスを選択して、編集できます。
[JSP Wizard]ダイアログボックスで、JSPページの作成が終了したことが報告されたら、[OK]をクリックします。
編集ペインで新しいファイルが開きます。 ナビゲーションペインで、ソースレイアウトのjspsディレクトリ、およびアーカイブレイアウトのアーカイブルートで、magicnumber.jspが表示されます。
このエクササイズでは、計算用データを提供するフォームのHTMLおよびJSPコードを記述します。
注記: Workbench-install-directory/docs/tutorial/TutorialFiles/webservicesディレクトリにあるCutAndPasteCode.txtファイルから、このエクササイズ用のコードをコピーできます。またはこの編集手順を実行しない場合は、同じディレクトリで正しく編集されたファイルmagicnumber-sample.jspを使用できます。 ご使用のオペレーティングシステムのツールを使用して、このファイルをプロジェクトのjspsディレクトリにコピーし、JSPウィザードを使用して作成したファイルを置き換え、magicnumber.jspに名前を変更します。
編集ペインでmagicnumber.jspを開いた状態で、</head>の後に次の行を追加します。
<jsp:useBean id="magicnumber" class="com.client.MagicNumberBean"/> <jsp:setProperty name="magicnumber" property="*"/>
<body>と</body>の間に次の行を追加し、既存のテキストを置き換えます。
<h1>Your Magic Number</h1> <p>Your magic number changes every day.</p> <form method="post"> <table> <tr> <td>Your age</td> <td> <input type="text" name="age" value="<%= magicnumber.getAge() %>" > </td> </tr> <tr> <td>Day of month you were born</td> <td> <input type="text" name="birthday" value="<%= magicnumber.getBirthday() %>" > </td> </tr> <tr> <td>Hour you went to bed last night</td><td> <input type="text" name="bedtime" value="<%= magicnumber.getBedtime() %>" > </td> </tr> <tr> <td span="2"> <input type="submit" name="Submit" value="Submit"> </td> </tr> </table> </form> <% if (request.getParameter("age") != null ) { magicnumber.calcNumber(); %> <%@ include file="calcnumber.jsp" %> <% } %>
このエクササイズでは、表示すべき計算結果が存在する場合に、magicnumber.jspに含まれるJSPフラグメントを作成します。
注記: Workbench-install-directory/docs/tutorial/TutorialFiles/webservicesディレクトリにあるCutAndPasteCode.txtファイルから、このエクササイズ用のコードをコピーできます。またはこの編集手順を実行しない場合は、同じディレクトリで正しく編集されたファイルcalcnumber-sample.jspを使用できます。 ご使用のオペレーティングシステムのツールを使用して、このファイルをプロジェクトのjspsディレクトリにコピーし、calcnumber.jspに名前を変更します。
[New File]ダイアログボックスで、[JSP]を選択して[OK]をクリックします。
Workbenchにより、JSPウィザードが表示されます。
[JSP name]には、「calcnumber」と指定します。 すべての生成されたコードは置き換えられるため、残りの値は重要ではありません。
[JSP Wizard]ダイアログボックスで、JSPページの作成が終了したことが報告されたら、[OK]をクリックします。
編集ペインでファイルが開きます。 ナビゲーションペインで、calcnumber.jspがソースレイアウトではjspsディレクトリに追加され、アーカイブレイアウトではアーカイブルートに追加されたことが確認できます。
すべてのコンテンツを次のコードで置き換え、ファイルを編集します。
<h2>Drumroll...</h2> <table> <tr> <td>Your number is:</td> <td><%= magicnumber.getMagicNumber() %></td> </tr> <tr> <td span="2">Did you expect a winning lottery number?</td> </tr> </table>
お分かりのように、このコードは完全なHTMLページではなく、 他のJSPページに含まれることになります。
このエクササイズでは、Java Classウィザードを使用してからJavaBeanのコードにコピーして、新しいJavaソースファイルを作成します(別の方法は、Workbenchで提供されたJavaBeanウィザードを使用することです。この方法は、独自のJavaBeanフォームを最初から作成する際に、最も便利です)。
注記: Workbench-install-directory/docs/tutorial/TutorialFiles/webservicesディレクトリにあるCutAndPasteCode.txtファイルから、このエクササイズ用のコードをコピーできます。またはこの編集手順を実行しない場合は、同じディレクトリで正しく編集されたファイルMagicNumberBean-sample.jspを使用できます。 ご使用のオペレーティングシステムのツールを使用して、プロジェクトのsrcディレクトリにcom\clientというディレクトリを作成してその場所にファイルをコピーし、MagicNumberBean.javaに名前を変更します。
Workbenchで、メニューから[File]>[New]の順に選択します。
プロジェクトおよびアーカイブでのファイルの配置場所を指定します。
[Base directory]では、c:\WorkbenchProjects\CalcWARClient\srcなどのように、srcディレクトリのフルパスを指定します。 このパスは、ドロップダウンリストから指定できます。
[Add the files to the archive with this prefix ]をオンにして、プリフィックスとして「WEB-INF/classes」と指定します。
[Java Class Wizard]ダイアログボックスで、新しいJavaファイルの作成が終了したことが報告されたら、[OK]をクリックします。
編集ペインで、ファイルMagicNumberBean.javaが開きます。
編集ペインで、パッケージステートメントの後に、次のインポートステートメントを追加します。
import javax.naming.InitialContext; import calc.*;
public MagicNumberBean() { /** @todo: implement this constructor */ }
次のプロパティ変数、コンストラクタ、およびゲッタメソッド、セッタメソッドで置き換えます。 ゲッタメソッドおよびセッタメソッドを使用したプロパティは、magicnumber.jspのフォームのフィールドに対応します。
private int age=0; private int birthday=0; private int bedtime=0; private double magicNumber=0.0; public MagicNumberBean() { } public int getAge() { return this.age; } public void setAge(int age) { this.age=age; } public int getBirthday() { return this.birthday; } public void setBirthday(int day) { this.birthday=day; } public int getBedtime() { return this.bedtime; } public void setBedtime(int bedtime) { this.bedtime=bedtime; } public double getMagicNumber() { return this.magicNumber; } public void setMagicNumber(double num) { this.magicNumber=num; }
クラスの最後の終了}
の前に、calcNumber()メソッドおよびgetCalculatorRemote()メソッドを追加します。これらのメソッドには、Webサービスを呼び出すコードがあります。
public void calcNumber() { double result=0; try { CalculatorImplWS remote = getCalculatorRemote(); result = remote.add(age, birthday); if (result != 0) { result = remote.multiply(result, bedtime); } setMagicNumber(result); } catch (Exception _e) { System.out.println("*** Error calculating number ***"); _e.printStackTrace(); } } private CalculatorImplWS getCalculatorRemote() throws Exception { InitialContext ctx = new InitialContext(); String lookup = "xmlrpc:soap:calc.CalculatorImplWSService"; CalculatorImplWSService service = (CalculatorImplWSService)ctx.lookup(lookup); CalculatorImplWS remote = (CalculatorImplWS)service.getCalculatorImplWSPort(); return remote; }
アプリケーションを配備するには、次の情報を指定する必要があります。
プロジェクトを作成した際に、Workbenchで、選択したアーカイブのタイプに適するXML記述子ファイルが作成されました。 WARでは、このファイルはweb.xmlと呼ばれます。
web.xmlを編集用に開くと、配備記述子エディタにより、XML要素が展開可能なツリー構造で表示されます。 加工されていないXMLを表示することもできます。 エディタでは、プロジェクトのコンパイル済みコードを使用して、表示する内容を決定します。アーカイブを最初に作成するのはこのためです。 アーカイブをまだ作成していない場合は、Workbenchによるアーカイブの作成が提示されます。
このエクササイズでは、アプリケーションのエントリポイントとなるJSPページを特定します。
ナビゲーションペインで、プロジェクトファイルCalcWARClient.spfを右クリックして、ポップアップメニューから[Open Deployment Descriptor]を選択します。
注記: Workbenchにより、[Select Build Option]ダイアログボックスが表示された場合、[No, don稚 build now]を選択して、[OK]をクリックします。 このダイアログボックスを常に表示したり、表示しないようにしたりするオプションを設定できます。
Workbenchにより、編集ペインでweb.xmlが開きます。 エディタには、[Descriptor]タブが表示され、記述子に含めることができる情報のタイプが示されます。
オプション |
値 |
---|---|
Servlet name |
magicnumber |
Type |
JSP |
JSP file |
magicnumber.jsp |
オプション |
値 |
---|---|
Servlet name |
magicnumber |
URL pattern |
magicnumber |
オプション |
値 |
---|---|
Welcome File |
magicnumber.jsp |
前のレッスンを完了している場合、ほとんどの配備設定は、すでに完了しています。 このエクササイズでは、主な手順について説明し、このプロジェクトを配備する場合に必要なプロジェクト固有の情報を提供します。 すべてのサポートされたサーバに対する配備手順の詳細については、「 Workbenchの配備手順」を参照してください。
サーバのプロファイルを作成していない場合は、この時点で[Edit]>[Profiles]の順に選択して作成します。
詳細については、配備手順で「
サーバプロファイルの手順」を参照してください。
次の情報を使用して、配備プロセスのサーバ固有の部分を作成します。
詳細情報および詳細な手順を示したエクササイズについては、配備手順で
ご使用のサーバの節を参照してください。
メニューから[Project]>[Deployment Settings]の順に選択して、サーバの配備設定を指定します。
[Server Profiles]タブで、前で定義したサーバプロファイルを選択します。 セキュリティ保護されたサーバを使用している場合は、[User name]および[Password]の値を指定します。
[Deployment Info]タブで、追加のアプリケーション固有の情報を次のように指定します。
注記: このチュートリアルでは、[Enable Rapid Deployment]チェックボックスはオンにしないようにしてください。 サーバでの高速配備の使用法の詳細については、『ツールガイド』の「 アーカイブ配備」を参照してください。
サーバ |
オプションおよび値 |
---|---|
Novell exteNd Application Server(またはSilverStream eXtend Application Server) |
[Deployment Plan] - Step 2で定義した計画を選択します。 [Overwrite existing deployment] - オン [Verbosity] - 3 [Ignore JSP compile errors] - オフ(配備時にJSPページが正常にコンパイルされない場合、アーカイブを配備しない) |
Sun Reference Implementation |
- |
Jakarta Tomcat |
- |
BEA WebLogic |
[WebLogic Application Name] - CalculatorWARClient。WebアプリケーションにアクセスするためのURLで使用します。 |
IBM WebSphere |
[Node Name] - 空白のまま残すか、サーバでセットアップしたノードを指定します。 |
Oracle9iAS |
[Deployment Name] - CalculatorWARClient。WebアプリケーションにアクセスするためのURLで使用します。 [Target Path] - 空白のまま残すか、サーバでセットアップしたパスを指定します。 [Website Name] - デフォルト値を受け入れるか、サーバでセットアップした名前を指定します。 |
詳細については、配備手順で
ご使用のサーバの節を参照してください。
[Deployment Settings]ダイアログボックスで[Deploy]をクリックします。
または
[Deployment Settings]で[OK]をクリックし、メニューから[Project]>[Deploy Archive]の順に選択します。
Workbenchで、[Output]ペインの[Deploy]タブに進行状況を知らせるメッセージ、エラー、および警告が表示されます。
ヒント: 大部分のサーバタイプでは、サーバが実行されていない場合、完全配備は失敗 します。 一部のサーバでは、配備後サーバを再起動する必要があります。 詳細については、 配備手順で ご使用のサーバの節を参照してください。
ブラウザを開き、アプリケーションのURLを入力します。 通常、次の項目が含まれます。
たとえば、ProverbsCloudというデータベースでアプリケーションをローカルNovell exteNd Application Serverに配備し、アプリケーションのURLがCalcWARClientである場合、URLは次のようになります。
http://localhost/ProverbsCloud/CalcWARClient
計算データを指定するためのフォームを持つウェルカムページが表示されます。
フォームにいくつかの値(整数のみ)を入力し、[Submit]をクリックします。
calcnumber.jspによって表示された結果は、フォームの下部に表示されます。
アプリケーションの開発 このレッスンでは、ユーザにフォームを表示し、Calculator Webサービスの呼び出し時にフォームデータを使用し、さらに同じJSPページに計算結果を示すWebアプリケーションを作成しました。
Workbenchツールの使用 Workbenchで、次のツールを使用しました。
[Project Settings]ダイアログボックス([Project]>[Project Settings]の順に選択)
配備ツール(プロジェクトポップアップメニューで[Open Deployment Descriptor]を選択し、[Edit]>[Profiles]、[Project]>[Deployment Settings]、[Project]>[Deploy Archive]の順に選択)
次のレッスン 次のレッスンでは、Webサービスをテストするための追加ツールについて学習します。
![]() ![]() ![]() ![]() ![]() |
チュートリアル : WEBサービスの操作 05/19/03 09:50:45 |
Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC, a wholly owned subsidiary of Novell, Inc. All rights reserved.