Auction Web アプリケーションの詳細 |
Auction Web アプリケーション・サンプルは、Software Development Platform (SDP) バージョン 6.0 を使用して作成されました。 本書では、次の図に表示される Auction Web アプリケーションの主要なビルド・ブロックについて説明します。 Auction Web アプリケーションには、多数のコンポーネントが含まれています。 本書は、アプリケーション全体をビルドする方法に関するチュートリアルではありません。 その代わりに、本書では、ワークベンチで提供されるさまざまなツールを活用する重要な開発ポイントと設計ポイントを中心に説明します。そのため、本書から得られる知識はユーザー独自の Web アプリケーションに応用可能です。 前の図に示されているように、Web コンテンツはデータとビジネス・ロジックを並行して作成するという方法で作成されました。 デザイナーが Web ページのスタイルとレイアウトを作成する一方で、Java の開発者と Web サービス・デベロッパーはそれらのページを駆動するためのビジネス・ロジックをコーディングしました。 以下の各セクションでは、これらの主要なコンポーネントがどのように作成されたかについて説明し、これらが Auction Web アプリケーションに対してどのように貢献するかを示します。
EJB マッピング・エディターを使用したデータベース・テーブルへのエンティティー Bean のマッピングEnterprise JavaBeans (EJB) を使用すると、リレーショナル・データベース内に保持されているデータに対する Java アプリケーションからのアクセスが簡便化されます。 エンティティー Bean は、Bean 管理パーシスタンス (BMP) またはコンテナー管理パーシスタンス (CMP) を使用して作成できます。 BMP を使用するよりも CMP を使用した方が柔軟性が高まります。なぜなら、データベース固有の呼び出しはすべて、EJB コンテナーが Bean の指示に従って実行するからです。 デフォルトでは、Rational ワークベンチ内のツールは CMP を使用してエンティティー Bean を生成します。 CMP エンティティー Bean には、アクセス SQL コードが含まれていません。 そのため、この Bean はコードを書き直さなくても、異なるデータベースを使用する他の J2EE サーバーにデプロイできます。 例えばトップダウン、ボトムアップ、および meet-in-the-middle のように、リレーショナル・データベースにオブジェクトをマッピングする方法は数種類あります。 トップダウン・アプローチでは、既存のオブジェクトを対象とする作業から始めて、必要に応じて徐々により詳細なレイヤーを定義してゆき、最終ステップとしてデータベースを設計します。 ボトムアップ・アプローチでは、既存のデータベース / スキーマを使用し、それに依存するレイヤーを設計してゆきます。これらのレイヤーにより、オブジェクトが定義されます。 meet-in-the-middle アプローチでは、既存のデータベースと既存のオブジェクトを使用し、オブジェクトが対応するデータベース・テーブルにマッチングするように中間のレイヤーを作成します。 Auction アプリケーションでは、エンティティー EJB の作成にボトムアップ・アプローチを使用しました。 最初から Cloudscape データベースが存在していて、これには必要であった EJB によくマッチングするテーブルが含まれていました。 「データベース接続」ウィザードを使用してこのデータベースへの接続を作成した後、「EJB から RDB へのマッピング」ウィザードを使用して、1 つ以上のテーブルからマップされる EJB を作成しました (例外的な EJB もいくつかあります)。 次の図に、Auction アプリケーションで使用されるエンティティー EJB と、それらを接続する関係を示します。 Auction アプリケーション内のエンティティー Bean は、リモート・クライアントから直接にはアクセスされません。 すべての要求と応答はセッション・ファサード によって処理され、Bean はバックエンド・データへのアクセスに使用されます。 これにより、サーバー・サイドでは永続的データ・ストアへの共用アクセスが可能となります。 次のセクションでは、セッション・ファサードについてより詳細に説明します。 エンティティー Bean のマッピングについての詳細は、『ボトムアップ・マッピングの生成』ヘルプ・トピックを参照してください。 「セッション Bean ファサード」ウィザードを使用した SDO データ・オブジェクトを持つセッション・ファサードの生成セッション・ファサードは、クライアントとバックエンドとの間のインターフェースで、Service Data Object (SDO) コンポーネントとの通信 (さらに最終的にはデータベースとの通信) を提供します。 セッション・ファサードは、クライアントが複数のオブジェクトの実行を必要とする要求を送信する場合に役立ちます。 そのような要求を個別にオブジェクトに送信すると、ネットワーク・トラフィックと待ち時間を増大させる可能性があります。 セッション・ファサードは、2 つの終端間でバッファーの機能を果たし、クライアントからは汎用の要求を 1 つ受け取って、その後必要なオブジェクトに個々の特定の要求を送信します。 これにより、トラフィックが削減され、クライアントの作成が単純化されます。 ファサードを作成したら、ツールのメニューから「EJB のマップ (Map EJBs)」を選択して、そのファサードで管理する EJB を選択できます。 ファサードは、必要な SDO コンポーネントをエンティティー Bean から生成します。 Auction アプリケーション内には、以下の 2 種類の機能グループをベースにした 2 つのファサードが存在します。
EJB をグループ化し、2 つの異なるファサードを使用することで、アプリケーションのパフォーマンスを向上させられます。なぜなら、ユーザーは必要とする EJB にしかアクセスしないからです。 Category のように Web サイト自体の機能を制御するエンティティー Bean は、システム・ファサードによって制御されます。 次の図に示すように、ファサードによって参照される EJB は、「セッション Bean ファサードの作成」ウィザードを使用して一時に 1 つずつ選択します。 必要な場合は、1 つの EJB を複数のファサード内で参照することも可能です。 Auction アプリケーションでは、これは行いませんでした。ファサードにメソッドを追加すれば、さらに別の機能を追加できます。 例えば、ユーザー・ファサード内には、ユーザーのリストを戻すメソッドと、アクティブ・ユーザーのリストを戻すまた別のメソッドが存在します。 これらのメソッドを例として使用すると、非アクティブのマークを付けられているすべてのユーザーのリストを戻すさらに別のメソッドをユーザー・ファサードに追加することができます。 セッション・ファサードについての詳細情報は、java.sun.com に掲載されている討議資料「Design Patterns: Session Facade」を参照してください。 Web Site Designer を使用した Web サイトのレイアウトの定義Web Site Designer ツールのナビゲーション・ビューでは、サイトのレイアウトがビジュアル表示されます。 個々のページとそれらの階層状の編成が示されるので、サイト内のページのレイアウトと編成の保守に役立ちます。 エディター内でページをドラッグ・アンド・ドロップすると、ページ・テンプレート内のナビゲーション・コントロールが自動的に更新されます。 次の図に示す Auction のナビゲーション構造の場合は、例えば「売却 (Sell)」ページを「参照」ページの前に移動して、ナビゲーション・タブの順序を変更できます。 Web Site Designer により、すべてのページのタブがこの正しい順序で自動的に生成されます。 実行中のアプリケーションの表示に変更を反映させるには、ナビゲーション・テンプレートを使用する各ページを再保管します。すぐ上で説明したナビゲーション・ビューに加えて、Web Site Designer は詳細ビューも提供します。このビューでは、次の図に示すように、追加のページ・エレメントが編集可能で便利な表に編成されます。 この表により、タイトル、作成者、およびナビゲーション・ラベルなどのページ・プロパティーを簡単に更新できます。 ![]() Web Site Designer を使用して Web サイトのレイアウトを管理する方法についての詳細は、オンライン・ヘルプの『Web サイト構造の作成』トピックを参照してください。 Page Designer を使用した Web ページ・テンプレートの作成ワークベンチは、Web ページ自体のほかにページ・テンプレート も作成できるビジュアル設計機能を備えています。 ページ・テンプレートは、コンテンツ・コードの再使用可能な部分で、Web サイトの各セクションに共通の外観または振る舞いを提供します。 Web ページからテンプレートを参照するようにするだけで、共通のルック・アンド・フィールを共用できます。 テンプレートの使用は、ユーザーと開発者の両方に恩恵をもたらします。ユーザーは Web サイトを簡単にナビゲートでき、開発者は特定のページに固有のコードを作成するだけで済みます。 また、ページ・テンプレートを使用すると、Web サイトのコンテンツの保守も容易になります。 テンプレート・ファイルに変更を加えると、そのファイルを参照するすべてのページにその変更が自動的に反映されます。 例えば、Auction Web アプリケーションでは、オークション・ページの汎用レイアウトがテンプレート maintemplate.jtpl によって提供されます。 Page Designer のパレットを使用して、テンプレートに Web ページ・エレメントを追加できます。このパレットを使用する場合は、エレメントを Web ページ上にドラッグ・アンド・ドロップできます。 必要な HTML コードが自動的に生成されます。 この方法でオークション・テンプレートを簡単に変更でき、例えば、フッターに現在日付と時刻を含めることも簡単に行えます。 オークション・テンプレートの主要なエレメントは、ナビゲーション・コントロールです。 Auction Web アプリケーションのナビゲーション・バーでは、次の 2 種類のナビゲーション形式が使用されます。
ナビゲーションをハード・コーディングする代わりに、テンプレートを呼び出すタグを挿入すれば、サイトのすべてのページに同じナビゲーション・バーを含められます。 テンプレート・マッピング・エディターは、テンプレートへの参照を Web ページに挿入します。 動的テンプレートでは、このテクノロジーを一歩進めて、例えばユーザーの役割や能力に応じて Web ページの表示内容を変更したり、Web ページにユーザー固有の情報を挿入したりしています。 Auction サンプルでは、動的テンプレートを使用して、管理者としてログインしたユーザーの場合にのみナビゲーション・バーに管理用のリンクを表示するようにしたり、ユーザーが正常にログインしたら「ログイン」ボタンを「ログアウト」ボタンと表示するようにしたりしています。 Web ページ・テンプレートの作成方法についての詳細は、ページ・テンプレートの作成に関するヘルプ・トピックを参照してください。 Page Designer を使用した JSP ファイルへの JavaServer Faces コンポーネントの追加JavaServer Faces (JSF) は、アプリケーション・サーバー上で稼動する動的 Web アプリケーションのユーザー・インターフェースのビルドを支援するテクノロジーです。 JSF は、オープン・スタンダード言語であり、JavaServer Faces 標準タグ・ライブラリーを使用します。 タグを HTML コードに挿入して、動的 Web ページを作成します。 JSF フレームワークでは、サーバー要求全体にわたってユーザー・インターフェースの状態を管理し、クライアントによって活動化されるサーバー・サイドのイベント処理用の単純な開発モデルを提案します。 例えば、ボタン・クリックのような各種のイベントについて、JSF に特定の振る舞いを指定できます。 Page Designer には、パレットにビジュアル表示される組み込み機能があり、それらを Web ページ上にドラッグ・アンド・ドロップできます。 これらのドラッグ・アンド・ドロップ機能により、JSF、HTML、およびその他のスクリプト・エレメントを容易に使用できます。 このことは、あるフィールドの基本機能 (例えば、テキスト・フィールドの値タイプ (整数、英数字) など) を制御するのに便利なだけでなく、妥当性検査の規則の設定も可能にします。 Page Designer では、各ページと関連付けられている SDO データに JSF コントロールをバインドできます。 Page Designer パレットを使用して、JSF ページに追加機能を追加できます。 例えば、項目の詳細ページに「現時点で購入 (Buy It Now)」ボタンを追加すれば、ユーザーは売り手がその項目に設定した値段でその項目を購入できます。 次の図に、オークションの詳細ページ用の JSF コントロールを示します。 新規入札用の入力テキスト・フィールド (newbid inputText フィールド) には、図の右下隅に表示されている「整数のみ (Integer only)」チェック・ボックスの指定により、整数のみを受け入れるという制限が付けられています。 この inputText フィールドに対しては、図の左下にある「h:inputText」の下のタブ内で定義される「妥当性検査」、「振る舞い」、および「アクセシビリティー」についての追加設定を行います。 「妥当性検査」タブでは、Java を使用して特定の妥当性検査規則を定義します。 例えば、newbid inputText フィールドに対する有効な入力は、非ヌルで、入札開始値より大きく、さらに現在の入札値に 1 を加算した値より大きい整数です。以下に、Auction アプリケーションの itemdetails ページの newbid inputText フィールド用に生成されたコードを示します。 <h:inputText styleClass="inputText" id="newbid" required="true" size="14"> <f:convertNumber integerOnly="true" /> <f:validateLongRange minimum="#{pc_Itemdetail.userFacadeLocalGetFindHighestBidResultBean==null ? pc_Itemdetail.userFacadeLocalGetBidItemSDOByKeyResultBean.startingbid : pc_Itemdetail.userFacadeLocalGetFindHighestBidResultBean.currentbid+1}"> </f:validateLongRange> </h:inputText> Faces JSP ファイルの作成についての詳細は、JavaServer Faces に関するヘルプ・トピックを参照してください。 Java ビジュアル・エディターを使用した Swing ユーザー・インターフェースの作成Web ページに加えて、Auction アプリケーションは管理者が名前やパスワードなどのユーザー情報を保守できるようにする Java Swing クライアントを持っています。 Swing クライアントを使用すると、すべての処理がクライアントのマシンに移されるので、Web アプリケーションに付き物の待ち時間が削減されます。 User Admin クライアントは、すべてのアプリケーション・ユーザーをリストします。 管理者は、Web ページが再ロードされるのを待たずに、ユーザーのデータと対話して、ユーザーに固有の属性を管理できます。 また、Swing クライアントは、よりクリーンでアプリケーション指向のインターフェースも提供します。 Swing クライアント・アプリケーションは、以下に示す Java ビジュアル・エディターを使用して作成されました。 このビジュアル・エディターを使用すると、アプリケーションを視覚的に作成でき、その作成過程でコードが自動的に生成されます。 これにより、複雑な Swing コードを手動で作成する必要性が削減されます。 ![]() 上の図では、Java ビジュアル・エディター内に User Admin アプリケーションが示されています。 右側のブロックはセッション・ファサードで、これらは SDO オブジェクトを使用してビジネス・ロジックにアクセスします。 これらのブロックをインターフェース設計に接続している実線は、ユーザー・インターフェース内の特定のイベントに関連付けられています。 破線は、SDO オブジェクトに渡されるパラメーターと、それらが戻す値を示します。 複雑な Java Swing コードを書くよりも、このアプリケーションを視覚的に作成する方が時間を短縮でき、ユーザー・インターフェースへの変更も迅速に行われます。 User Admin のインターフェースは、Java ビジュアル・エディター内で直接作成されました。 新しい Swing コンポーネントをパレットから選択してアプリケーションに追加できます。 どのコンポーネントでも、望ましいルック・アンド・フィールが実現されるように、提供されるツール、ウィザード、フィードバック、およびプロパティー・シート内のプロパティーを使用してカスタマイズできます。 また、表やテキスト・フィールドのように内容を表示できるコンポーネントは、データ・ソースにバインドして、そこから提供されるデータを表示するようにできます。 User Admin アプリケーションを作成したら、次にそれを Web サイトにデプロイする必要があります。 作成された User Admin アプリケーションは、EAR ファイルに組み込まれて、Web サイトのディレクトリー構造内に配置されます。 WebStart を介してアプリケーションを正しくデプロイできるように、追加のスクリプトと HTML リソースが作成されます。これについての説明は、WebSphere Application Server 製品と一緒にパッケージ化されている WebSphere Application Client ソフトウェアの資料に明記されています。 セキュリティー上の理由により、クライアント・サイドで実行されるリソースには証明書による署名が付けられます。 資料で説明されている必要なセットアップをすべて実行すると、アプリケーションは、ブラウザーと Java WebStart しか持っていないクライアントにデプロイできる状態になります。 Web アプリケーション・コンポーネントの作成後、Auction Web アプリケーションをアプリケーション・サーバーにデプロイして実行します。 Auction アプリケーションには、サンプル・ギャラリー (Samples Gallery) から入手可能な追加のコンポーネントが含まれています。 詳しくは、ビジュアル・エディターでの Java の編集に関するヘルプ・トピックを参照してください。 Web サービスの作成Web サービスは Web アプリケーションに依存しないため、Web アプリケーションと並行して作成されました。Web サービスは、ビジネス・ロジックにアクセスするための別の手段であり、Web アプリケーションのすべての機能が組み込まれるわけではありません。 Auction アプリケーションのこの部分に関する詳細な説明は、『Web サービス』セクションを参照してください。 |