レベル: 初級 Tad Siminitz, Software IT Architect, IBM
2003年 5月 01日 この記事では、Rational eXtended Development Environment (XDE) とIBM WebSphere Studioを使用して、e-businessアプリケーションの構築を最初から最後まで行える統合プラットフォームを用意する方法を説明します。著者は、IBM WebSphere StudioおよびXDEスイートで提供されるいくつかのプラグインを使用して、短い開発サイクルでサンプル・アプリケーションの設計、インプリメント、およびテストを行う方法を示しています。
概要
Rational eXtended Development Environment (XDE) およびIBMのWebSphere Studioを一緒に使用することにより、e-businessアプリケーションを構築するための、完全で十分に統合されたプラットフォームが手に入ります。要件分析、オブジェクト指向設計、およびモデル化も、コードのビルドとテストに使用するものと同じ情報モデルに基づいて行うことができます。つまり、プロジェクトの参加者全員が、同じ楽譜を見て歌うことができるようになるわけです。さまざまなツールを反復して使用する従来の方法では、多くの場合、開発サイクルの作業を進めるたびに、ツールからツールへ情報をエクスポートする必要がありました。こうしたさまざまなツールの機能を理解していただくために、この記事では以下のシナリオに基づいて話を進めていくことにします。
新規プロジェクトの設計者は、真新しいシートを使用してプロジェクトを開始し、アプリケーションのあらゆる部分を完全に支配するというぜいたくを味わえることもあります。しかし、現実では既存のコンポーネントを基に作業を進めなければならない場合の方が多く、また、ほとんどの場合には、既存のリレーショナル・データベースを基にしなければなりません。
このシナリオでは、あなたが、Webバンキング・アプリケーションをインプリメントして、エンド・ユーザーが自分の口座から支払いを行えるようにすることを依頼されたものとします。あなたは、この小規模なアプリケーションの設計者兼インプリメンターとして、既存の、使用頻度の高いデータベース内のテーブルを使用することも要求されているとします。
また、あなたの組織で最近、すべての新規開発プロジェクトは正式な要件、分析、および設計プロセスに従わなければならないという指示が出されました。開発サイクルのこのフェーズで選択されたツールは、Rational SoftwareのXDE、および追加の開発機能とアプリケーション・サーバーのテスト機能を備えたIBMのWebSphere Studio Application Developerです。システムにおけるこのささやかな部分のために、以下のアクティビティーを行う必要があります。
- どのようなアプリケーションを構築する必要があるのかを表すための要件を収集する。
- システム内のいくつかのアクターとユース・ケースの関係を示すためのユース・ケース・ダイアグラムを作成する。
- オブジェクトの対話 (メッセージ) を時間の順に表示するためのシーケンス・ダイアグラムを作成する。
- リレーショナル・データベースをリバース・エンジニアリングして、いくつかのEnterprise JavaBeans (EJB) コンポーネントを作成する。
- クラス・ダイアグラムを作成して、Javaクラスのうちの1つを変更する。
- コードをWebSphere Application Serverにデプロイし、WebSphere Studioで提供されるユニット・テスターを使用してテストする。
要件の収集
最初の一歩は、普通、要件を集めることです。これは、多くの場合、提案されたアプリケーションのエンド・ユーザーになる可能性のある人々との面談によって行います。要件は、特定の作業を手動で、あるいは既存のアプリケーションで行っている人々からも得ることができます。私たちのWeb ATMの例のために集められた要件は、顧客が自分の口座のうちの1つから、受取人に対して支払いを行えるようにすることです。この要件を文書化すると、次のようになります。
要件A: 「エンド・ユーザーは、自分が口座の所有者であることを証明するために、識別番号とパスワードを入力する必要がある。これが認可されると、その顧客は『Make Payment (支払い)』を選択することができる。ユーザーは特定の口座を選択し、支払う金額を入力し、受取人の名前を指定する。」
実際の状況では、この段階でできるかぎり詳細な要件を収集することが大切です。開発サイクルの後の段階で、作業を実行するための論理をインプリメント (あるいは生成) する必要があるためです。この要件を収集するためには、XDEを始動する必要があります。XDEは設計上、WebSphere Studio、またはその他のEclipseテクノロジー製品の組み合わせへのプラグインとしてインプリメントされています。これらの要件をXDEに入力して、任意のSCMシステムでプロジェクトおよびバージョンの管理を行いながら、そのファイルを保持することができます。これらの要件を基に、ユース・ケースの作成を開始することができます。
ユース・ケース は、使用シナリオを記述するものです。この時点では、ユーザーが誰であるのか分かっている必要があります。ユーザーはユース・ケースの不可欠な一部です。
次に、Webバンキング・アプリケーションを使用して振り込みを行うための使用シナリオを表す、簡潔なユース・ケースを入力します。
プロジェクトおよびモデルの作成
ユース・ケースを入力するには、その前にXDEのモデル化プロジェクトとモデルをセットアップする必要があります。ここでは、すでにXDEおよびWebSphere Studio Application Developerをインストールし、ツール機能環境を開始していることを想定しています。必ず、「Modeling (モデル化)」パースペクティブで作業を行うようにしてください。「Modeling (モデル化)」パースペクティブを使用するには、「Perspective (パースペクティブ)」メニューから「Open (開く) > Other (その他)」と選択してください。「Modeling (モデル化)」を選択して「OK」をクリックします。新しいXDEモデル化プロジェクトを作成するには、次のようにしてください。
- 「File (ファイル)」メニューで「New (新規) > Project (プロジェクト)」と選択します。「New Project (新規プロジェクト)」ダイアログ・ボックスが表示されます。
- 「New Project (新規プロジェクト)」ダイアログ・ボックスの左側のペインで「Modeling (モデル化)」を選択します。右側のペインで「Basic Modeling Project (基本モデル化プロジェクト)」を選択します。
- 「Next (次へ)」をクリックします。
- 「Project name (プロジェクト名)」ボックスで新規プロジェクトの名前を入力します。このシナリオでは、
WebBankModel という名前を使用します。
- 「Use default location (デフォルト・ロケーションを使用)」チェック・ボックスをチェックします。
- 「Finish (終了)」をクリックします。
これでプロジェクトが作成されましたので、このプロジェクトに組み込むモデルを作成することができます。1つのプロジェクトに複数のモデルを組み込むことができます。新規モデルを作成するには、「Modeling (モデル化)」パースペクティブから次のことを行います。
- 「File (ファイル)」メニューで「New (新規) > Model (モデル)」とクリックします。
- 「File Type (ファイル・タイプ)」ペインから「Rational XDE」を選択し、「Template area (テンプレート域)」として「blank model (ブランク・モデル)」を選択します。
- 「File name (ファイル名)」ボックスで新規モデル・ファイルの名前を入力します。ここでは、
WebBankModel という名前を使用します。
- 「Destination (宛先)」フォルダーで、上記の作業で入力したプロジェクトの名前を選択します。
- 「Finish (終了)」をクリックします。
「Model Explorer (モデル・エクスプローラー)」にモデルが表示されます。ダイアグラム・ウィンドウでユース・ケースのメイン・ウィンドウが開きます。これにより、構築したいアプリケーションの概要を記述する、高レベルなユース・ケース・ダイアグラムの作成を開始できるようになります。詳細な事項は後から書き込むことができるので、問題ありません。最初に追加する必要があるのは、おそらくアクター です。アクターは、UMLの世界では、モデル化されるシステムと対話する際にユーザーが果たす役割を記述する、モデル要素として定義されています。通常は人を表しますが、必ずしもその必要はありません。システムと対話する組織、システム、またはマシンを表すこともあります。最初のアクターは、このWebバンキング・アプリケーションのユーザーを表します。このアクターは、以下のステップに従ってモデルに追加することができます。
- 「Model Explorer (モデル・エクスプローラー)」でモデルを選択します。
- 右マウス・ボタン・クリックして「Add UML (UMLの追加) > Actor (アクター)」と選択します。
- アクターに
WebBankCustomer などのような名前を付けます。
- ステップ2および3を繰り返して、もう1つアクターを追加し、照会を行う外部データベースを表す
TransactionSystem という名前を付けます。
ユース・ケースの追加
次に、いくつかのユース・ケースを追加する必要があります。ユース・ケースは、アクターから見たシステムの振る舞いを指定しますが、そうした振る舞いをインプリメントする内部構造については明記しません。この時点では、必要な事柄に関する、なんらかの高レベルな一般情報が分かっていますので、いくつかのユース・ケースを追加することができます。エンド・ユーザーを認可するためのユース・ケース、残高を確認するためのユース・ケース、および振り込みを行うユース・ケースの3つを追加する必要があります。モデルにユース・ケースを追加するには、次のようにしてください。
- 「Model Explorer (モデル・エクスプローラー)」でモデルを選択します。
- 右マウス・ボタン・クリックして「Add UML (UMLの追加) > Use Case (ユース・ケース)」と選択します。
- ユースに
AuthorizeUser などの名前を付けます。
- ステップ2および3を繰り返して追加のユース・ケースを作成し、それらに
TransferFunds、AccountBalance、およびMakePayment という名前を付けます。
ユース・ケース・ダイアグラムの作成
システムに必要ないくつかの一般的な機能を記述する、4つのユース・ケースが作成されました。ここで、システムの基本的な概要を説明するユース・ケース・ダイアグラム を作成することができます。ユース・ケース・ダイアグラムには、モデル内のすべてのユース・ケースとアクターを含めることも、それらのうちの一部だけを含めることもできます。目の前にある空のウィンドウ・ペインには、ブランクの「Use Case Diagram (ユース・ケース・ダイアグラム)」エディターが含まれているはずです。このことは、ツールボックス (デフォルトでは、モデル化パースペクティブの左端のペイン) にアクター、ユース・ケース、および関連などの、ユース・ケースに関連したものが含まれているかどうかを調べることにより、確認することができます。
ダイアグラムの作図は簡単に行うことができます。先ほど追加したすべてのコンポーネントは、上で作成したモデルに含まれています。2つのアクターと4つのユース・ケースをレイアウト・サーフェスにドラッグ・アンド・ドロップしてください。できれば、WebBankCustomerを左に、またTransactionSystemを右に配置してください。ユース・ケースは、両者の間に縦方向に並べることができます。
関連 (association) は、アクターとユース・ケースの間のコミュニケーションを表す関係です。エンド・ユーザーには、これらのものを行うために必要な要件があるため、関連をユース・ケース・ダイアグラムに追加する必要があります。WebBankエンド・ユーザー・アクターから、認可用、振り込み用、および残高検査用の3つのユース・ケースへの、3つの関連を追加してください。それが完了すると、モデルは図1 と似たようなものになるはずです。
図1. アクターおよびユース・ケースのモデル
振る舞いを表すシーケンス・ダイアグラムの作成
高レベルのシステム機能を記述するユース・ケース・ダイアグラムはすでに開発されているため、データベースに本来備わっていない、特定の振る舞いをシステムに追加する作業に専念することができます。特に、既存のデータベースから得られるいくつかの重要なクラスを再エンジニアリングする予定があるため、基礎になっているデータ・モデルには含まれていない論理を追加する必要があります。いくつかのシステム・オブジェクトとそれらの間の対話を示すシーケンス・ダイアグラム を作成する必要があります。シーケンス・ダイアグラムは、特定のシナリオで一緒に機能するオブジェクト間のメッセージを、その発生順に表示するUMLダイアグラムです。分析フェーズでは、アプリケーションを機能させるためにインプリメントする必要のあるオブジェクトおよびメソッドを判別するために、このシーケンス・ダイアグラムが役に立ちます。MakePaymentのシーケンス・ダイアグラムを追加するには、次のようにしてください。
- 「Model Explorer (モデル・エクスプローラー)」でユース・ケースMakePayment を選択します。
- 右マウス・ボタン・クリックして「Add Diagram (ダイアグラムの追加) > Sequence: Role (シーケンス: 役割)」と選択します。
- ダイアグラムに
MakePaymentDiagram という名前を付けます。
これで、モデルにコンポーネントを追加できるようになりました。このユース・ケース・ダイアグラムはかなり高レベルなものであるため、顧客および口座に関する基本的な情報を提供する、WebBankCustomer、MakePaymentユース・ケース、およびTransactionSystem間の関連だけが示されています。このシーケンス・ダイアグラムでは、システムを構築するために必要な、重要な成果物の間で行われるメッセージングについて、ある程度詳しく指定する必要があります。これらの項目を「接続」するために、ダイアグラム内のオブジェクト間で行われるコミュニケーションを表す、いくつかのメッセージを追加する必要があります。XDEでは、あるオブジェクトが一定期間存在することを表記するためにライフライン が使用されます。ライフラインとメッセージを追加するには、次のようにします。
- 「Model Explorer (モデル・エクスプローラー)」からアクター
WebBankCustomer を選択し、左側に縦長に配置された作業域にそれをドロップします。
-
TransactionSystem についても同じことを行います。
- (Toolbox (ツールボックス) にある)「Lifeline (ライフライン)」アイコンを、他の2本のライフラインの間にドラッグ・アンド・ドロップします。
- このライフラインの名前を
WebPage に変更します。
-
WebBankCustomer とWebPage の間にメッセージを追加し、それにEnter (acct, payee, amt) という名前を付けます。
-
WebPage とTransactionSystem の間に別のメッセージを追加し、
MakePayment(acct, payee, amt) という名前を付けます。
-
TransactionSystem からWebPage へのリターン・メッセージと、
WebPage からWebBankCustomer へのリターン・メッセージを作成します。
- ダイアグラムを保管します (ctrl-S)。
完成したシーケンス・ダイアグラムは、下の図2 のようになるはずです。
図2. シーケンス・ダイアグラム
ユース・ケース・ダイアグラム内に「ノート」を作成し、このシーケンス・ダイアグラムにリンクすると、特定の機能領域から設計をドリルダウンできるようになります。ノートを作成するには、次のようにしてください。
- ユース・ケース・ダイアグラム
WebBankModel をまだ開いていない場合には、このダイアグラムを開きます。
- ノートを作成し、
MakePayment ユース・ケースに接続します。
- シーケンス・ダイアグラムを表すアイコンを、ユース・ケースにリンクされたノートまでドラッグします。
- ユース・ケース・ダイアグラム内のノートをダブルクリックし、シーケンス・ダイアグラムを開きます。
EJBプロジェクトの作成
このシナリオでは、既存のデータベースを使用することになっていますので、途中の話を飛ばして、あなたにとって興味のあるテーブルの説明を行い、Application Developerのツール機能を使用していくつかの初期クラスを作成することにします。多くのアプリケーションは、最初に、データベースが存在すること、およびそれを使用することを前提に構築されますので、これはかなり一般的なやり方です。テーブル定義をリバース・エンジニアリングすると、Webアプリケーションによって理解される、いくつかのJavaクラスが得られます。また、これらのクラスは、基礎になっているリレーショナル・テーブルを理解します。
Enterprise JavaBeans (EJB) コンポーネントはJ2EE仕様の一部であり、これを使用すると、ライフ・サイクルの振る舞いをカプセル化して、顧客や口座などの、ビジネス・ドメイン内のなんらかのものを表すエンティティーにすることができます。この仕様は少しばかり複雑ですが、要するに、永続的ストアに対する読み取りや書き込みなどの基本的な操作は、標準的な方法で処理されます。ツール機能は、ユーザーのためにEJBコンポーネントを効率よく作成できるように設計され、また、ランタイム・サーバー (WebSphere Application Serverなど) は、それらのコンポーネントの操作を効果的に管理できるように設計されています。
EJBコンポーネントを構成する前に、それを収めるプロジェクトを作成する必要があります。任意のパースペクティブから、次のように行ってください。
- 「File (ファイル) > New (新規) > Project (プロジェクト) > J2EE」と選択し、「Enterprise Application Project (エンタープライズ・アプリケーション・プロジェクト)」を選択します。
- このプロジェクトにATMという名前を付け、EJBおよびWebプロジェクトに関するデフォルトを受け入れます。アプリケーション・クライアント・プロジェクトのフォルダーは使用しませんので、このプロジェクトは削除してもかまいません。
この時点で、ATMプロジェクト内のapplication.xmlという名前のXMLファイルを調べることができます。このファイルは、J2EEエンタープライズ・アプリケーションを構成するすべてのコンポーネントを1つにまとめるための、ポインターを表します。ファイルを見るには、META-INFディレクトリーの下のATMプロジェクトにあるJ2EEパースペクティブの「Navigator (ナビゲーター)」ビューを使用することをお勧めします。このファイル名をダブルクリックすると、XMLエディターに、一般、ソース、またはその他のさまざまなモードでこのファイルが表示されます。ツール機能には、J2EEアプリケーションのXML構成ファイルに関する「知恵」が組み込まれています。
まず最初に、Application Developerでデータ・パースペクティブを開きます。データ・パースペクティブをまだ開いていない場合には、メインメニューから次のように行ってください。
- 「Perspective (パースペクティブ) > Open (開く) > Other (その他)」と選択して、「Data (データ)」を選択します。次に、ATMデータベースへの接続を作成する必要があります。
- 「DBExplorer」ビューから、右マウス・ボタン・クリックして「New Connection (新規接続)」を選択します。
図3 に示すようにフィールドに記入することができます。
図3. データベースへの関連付けの作成
終了してから「Finish (終了)」をクリックします。いくつかのアイコンを展開して、テーブルが含まれているかどうかを調べることができます。先ほど作ったテーブルYourId.AccountとYourId.Csutomerがあるはずです。次に、J2EEプロジェクトの作成時に作成されたEJBプロジェクトにこれらのテーブルをインポートする必要があります。そのためには、次のようにします。
- (「Data (データ)」パースペクティブにある) DBExplorer内の項目を展開し、ATM項目を強調表示し、右マウス・ボタン・クリックして「Import to Folder... (フォルダーにインポート...)」を選択します。
- ポップアップ・メニューから「Browse (ブラウズ)」をクリックし、
ATMEJB という名前のプロジェクトを選択して「Finish (終了)」をクリックします。メタ情報のためのフォルダーの作成に関する質問に対し「yes (はい)」と応答します。
- J2EEパースペクティブに戻ってJ2EEビューを表示すると、Databasesディレクトリー内の情報を見ることができます。
オブジェクトからリレーショナルへのマッピングの作成
オブジェクトからリレーショナルへのマッピングを作成する理由は、いくつかあります。まず、リレーショナル・モデルとオブジェクト・モデルの間には本来的な相違があり、効果的なプログラミングを行うには、それらの相違を解明し、考慮する必要があります。もう1つの理由は、アプリケーション・サーバーを使用しているプログラマーに、このアプリケーション・サーバーに入るいくつかのJavaクラスが提供されることです。これらのJavaクラスは、アプリケーション・データを永続化するためにどのデータベースが使用されるのかを認識しています。リレーショナルへのマッピングを行うと、アプリケーションの柔軟性が向上するとともに、データベースとそのサーバーの処理の負荷が軽減します。
マッピングを作成するには、J2EEパースペクティブから次のようにしてください。
- ATMEJBモジュールを強調表示させます。
- 右マウス・ボタン・クリックして「Generate (生成) > EJB to RDB Map (EJBからRDBへのマップ)」と選択します。
- ポップアップ・ウィンドウから「bottom-Up O/R Map (ボトムアップO/Rマップ)」を選択します。
- 「open mapping editor upon completion (完了時にマッピング・エディターを開く)」のチェック・ボックスをチェックし、作成したものを見ることができるようにします。
- 「Finish (終了)」をクリックします。
これが完了すると、マッピング・エディターは図4 に示すようになります。
図4. リレーショナル・マップの作成
EJBプロジェクトのリバース・エンジニアリング
次に、ツール機能にJavaコード・モデルを生成させます。大規模なアプリケーションをモデル化していて、そのうちのごく一部から私たちのEJBコンポーネントが作られるのであれば、セッションBeanまたはエンティティーBeanとして使用される自動生成EJBコードを含め、アプリケーション全体をうまく表現することができます。これを簡単に行えるようにするには、モデル化パースペクティブ内でJ2EEビューを開きます。モデル化パースペクティブを開き、メニュー項目から「Perspective (パースペクティブ)> Show View (ビューの表示) > Other... (その他...) > J2EE > J2EE View (J2EEビュー)」と選択します。
モデル化パースペクティブでJ2EEビューが開きます。このビューは、使いやすいように移動させることができます。コードの編集と表示を容易にするためには、「Basic (基本)」にある「Outline (アウトライン)」ビューでも同じことを行ってください。この時点で、以下のステップに従って、Javaコード・モデルをATMEJBプロジェクトに追加することができます。
- ATMEJBモジュールを強調表示させます。
- 「New (新規) > Other (その他)」と選択し、ウィザードを開きます。
- 「Modeling (モデル化)」を選択して「Model (モデル)」を選び、「Next (次へ)」をクリックします。
- 次に表示される画面で、図5 に示すように、「File types: (ファイル・タイプ:)」の下にある「Java」と「Templates: (テンプレート:)」の下にある「Java Code Model (Javaコード・モデル)」を選択し、モデルに
JavaCodeModel_ATM という名前を付けて「Finish (終了)」をクリックします。
図5. Javaコード・モデルの追加
このモデルをリバース・エンジニアリングするには、次のようにしてください。
- 「Navigator (ナビゲーター)」ビューでこのモデル・ファイルを右マウス・ボタン・クリックし、「Reverse Engineer (リバース・エンジニアリング)」を選択して、ダイアログに対して「yes (はい)」と応答します。
- ルートを <WAS Install DIR>\workspace\ATMEJB\ejbModuleに設定し、「OK」をクリックします。
- 「Add recursively (再帰的に追加)」をクリックして *.javaファイルを追加します。「OK」をクリックします。
クラス・ダイアグラムの作成
上記のステップで、EJBコンポーネントがモデル・コンテナーに追加されました。次に、クラス・ダイアグラムを作成し、これらのコンポーネントの1つであるAccountBeanをこのモデルに追加します。クラス・ダイアグラムを作成するには、次のようにします。
- 「Model Explorer (モデル・エクスプローラー)」でATMパッケージを選択し、右マウス・ボタン・クリックして「Add Diagram (ダイアグラムの追加) > Class (クラス)」と選択し、ダイアグラムに
Account という名前を付けます。
- EJBツール機能によって作成された
AccountBean Javaクラスをドラッグし、クラス・ダイアグラムにドロップします。
-
AccountBean に対する依存関係のいくつかは、このクラスを右マウス・ボタン・クリックして「Add Related Shapes (関連した形状の追加)」を選択し、「All Models (すべてのモデル)」を選択して「OK」をクリックすることにより、表示することができます。
クラス・ダイアグラムは図6 のようになるはずです。
図6. サンプル・クラス・ダイアグラム
次に、設計レベルで、支払いなどを行うメソッドを追加することにより、
AccountBean クラスに追加機能を付け加えることができます。メソッドを追加するには、次のようにします。
- 「Model Explorer (モデル・エクスプローラー)」から
AccountBean クラスを選択し、それを右マウス・ボタン・クリックします。
- 「add Java (Javaを追加) > method (メソッド)」と選択します。
-
makePayment () と入力します。
- 「AccountBean class (AccountBeanクラス)」を右マウス・ボタン・クリックし、「Generate Code (コードの生成)」を選択します。
このクラスでは、追加されたメソッド・スタブを見ることができます。次のようにコードを完成させてください。
public void makePayment(java.math.BigDecimal howMuch, java.lang.String payee)
{
setBalance(getBalance().subtract(howMuch));
System.out.println ("Make a Payment to"+ payee + "for the amount of $" + howMuch);
}
|
必ず保管を行ってください (「File (ファイル) > Save AccountBean.java (AccountBean.javaの保管)」またはctl-S)。ここで行っているのは、単にステートメントをコンソールに出力することだけですので、注意してください。実際に支払いを行うためには (まだインプリメントしていない) 別のサービスを呼び出す必要があります。また、残高を超える金額の引き出しなどの、起こりうるエラーの捕そくも、まだ行っていません。
次に、AccessBeansウィザードを使用して、Customer (顧客) およびAccount (口座) に関するJavaBean Wrapper AccessBeanを作成する必要があります。JavaBean WrapperのAccessBeanタイプを指定し、Account (口座) およびCustomer (顧客) のためのfindByPrimaryKey() メソッドを使用します。
テストを行う前に、EJBデプロイメント・コードを生成する必要があります。EJBコンポーネントのライブラリーを見て分かるように、多くのコードがEJBに関連付けられていて、その多くはJ2EEの仕様に合わせて作成され、システム間での移植や共用が可能になっています。このようなコードを生成するには、J2EEビューからATMEJB EJB モジュールを強調表示させ、ポップアップ・メニューを使用して、Customer (顧客) およびAccount (口座) の「Deployed EJB code (デプロイメントEJBコード)」を生成してください。
「Outline (アウトライン)」ビューからメソッドを選択し、右マウス・ボタン・クリックして「Enterprise Bean > Promote to Remote Interface (リモート・インターフェースにプロモート)」と選択して、この新規メソッドをリモート・インターフェースに必ずプロモートしてください。
アプリケーションのテスト
WebSphere Studioツールのさらに強力な点は、アプリケーション・サーバーで実行しながらコンポーネントの単体テストを行えることです。サーバー・パースペクティブには、WebSphere Application Serverを含むさまざまなアプリケーション・サーバーが組み込まれています。この方法によるテストの主要な利点は、IDEの機能を使用してJavaコンポーネントをデバッグできることです。このほうが、コードをアプリケーション・サーバーにインストールして、単体テストを行ってデバッグするよりも簡単です。作成したコンポーネントをテストするには、次のようにしてください。
- 「Server (サーバー)」パースペクティブを開きます。
- Servers Project (サーバー・プロジェクト) を作成して名前を指定するために、「File (ファイル)」メニューから「New (新規) > Server Project (サーバー・プロジェクト)」とクリックします。このプロジェクトに
Servers という名前を付けます。
- サーバーのインスタンスと構成を作成します。「File (ファイル)」メニューで「New (新規) > Server Instance and Configuration (サーバーのインスタンスと構成)」とクリックします。これに
WAS V4 Local Test という名前を付け、Serversプロジェクト内に配置します。この時点で、このサーバーのServerインスタンス・タイプがWebSphere V4テスト環境であることを示す必要があります。(Apache Tomcatなどのような、別のオプションもあります。)
これで、始動および停止したり、中にコードをインストールしたりできる、アプリケーション・サーバーが出来上がりました。これは、ツール機能やデバッグ環境を備えていることを除き、実動環境で稼働するアプリケーション・サーバーと非常によく似ています。次に、以下のようにして、この構成にデータ・ソースを追加する必要があります。
- 「Server configuration (サーバー構成)」ビューで「WAS v4 Local Test Configuration (WAS v4 Local Test構成)」をダブルクリックし、「Datasource (データ・ソース)」タブを選択します。
- 下の図7 に示すように、「Name (名前)」としてATM を、「JNDI name (JNDI名)」としてjdbc/ATM を、また「Database name (データベース名)」としてATM を指定します。
- 変更内容を保管します (Ctrl-S)。
図7. データ・ソースの追加
今追加したデータ・ソース情報はWebSphere Application Serverに関する情報ですが、この情報は、ほかの個所にも入力する必要があります。このデータ・ソース情報を、先に作成したEJBモジュールに関連した構成設定値に追加してください。これらのJNDI名は完全に 同一でなければなりません。EJBモジュールでデータ・ソース設定値を編集するには、次のようにしてEJB拡張エディターを使用します。
- J2EEビューに切り替えます。
- ATMEJBモジュールを強調表示させ、右マウス・ボタン・クリックし、「Open with EJB Extension editor (EJB拡張エディターで開く)」を選択して「Bindings (バインディング)」タブを押します。
-
図8 に示すように、「Datasource JNDI name (データ・ソースJNDI名)」として、ATMEJBモジュールを表すjdbc/ATM を指定します。
- 変更内容を保管します (ctl-S)。
図8. データ・ソース名の設定
ここで「Server (サーバー)」パースペクティブに切り替えます。次のステップはとても単純ですが、非常に重要です。エンタープライズ・アーカイブ・リソース (EAR) ファイルの主な目的は、アプリケーションの実行に必要なすべてのコンポーネントを単一ファイルにカプセル化することです。こうすることにより、パッケージ化されたアプリケーションのデプロイメントがきわめて容易になり、そのアプリケーションの基礎になっているJ2EEの目標の1つ、(つまり、さまざまなベンダーによってインプリメントされた、J2EEに準拠したアプリケーション・サーバー間でのアプリケーションの移植性) が達成しやすくなります。実際には、J2EE関連のコンポーネントおよびWebコンポーネントのトラッキングのために使用されるグループ化メカニズムは、XMLファイルによって提供されています。いずれにしても、WebSphereサーバー構成のためには、次のようにして、先に作成したATMEARモジュールを追加する必要があります。
- 「Server (サーバー)」パースペクティブに切り替えます。
- 「Server configuration (サーバー構成)」ビューで「WAS V4 Local Test (WAS V4ローカル・テスト)」を選択します。
- 右マウス・ボタン・クリックして「Add Project (プロジェクトの追加)」を選択し、EARモジュールATMEAR を選択します。
ここで、次のステップに従って、WebSphere Application Serverの構成を開始する必要があります。
- 「Server (サーバー)」パースペクティブの「Server control (サーバー制御)」パネルで、「WAS V4 Local Test」を選択します。
- 右マウス・ボタン・クリックしてアプリケーション・サーバーの「Start (始動)」を選択します。コンソールに始動メッセージが表示されます。
- 「Server open for e-business」というメッセージが表示されると、次に進むことができます。
アプリケーション・サーバーが稼働していますので、あなたが設計し、IBM EJB Test Clientを使用してビルドしたEJBコンポーネントを、次のようにしてテストすることができます。
- 「J2EE」パースペクティブに切り替えます。
- ATMEJBプロジェクトを強調表示させ、ポップアップ・メニューから「Run on Server (サーバーで実行)」を選択します。
- 「JNDI Explorer」をクリックしてCustomer (顧客) EJBをテストします。CustomerhHomeには
findByPrimaryKey() を使用し、顧客番号には1を使用してください。
- Customer EJBの
getAccount() メソッドを使用して「bring up an Account (口座を開く)」をテストします。
- Accountの
makePayment() メソッドをテストします。
EJB Test Clientによるテストは、複数のステップによって行われます。これは、事前作成されたGUIを使用する汎用テスターであり、コードの機能をテストするためのものです。エンド・ユーザー向けのアプリケーションではありませんので、注意してください。例えば、makePayment メソッドを「ロード」すると、パラメーターを受け渡すステップを経て、最終的にこのメソッドを呼び出します。以下に例を示します。
- 「References (参照)」ビューで
makePayment リンクをクリックします。
- Constructorsに関してjava.math.BigDecimalの下に表示された最初のパラメーター・ビューでBigDecimal(double) を選択し、値フィールドが表示されてから10進値 (25.00など) を入力し、「Invoke and Return (呼び出して戻す)」を選択します。
- コンストラクターに関する2番目のパラメーターjava.lang.String で、
Sting(String) を選択し、値フィールドが表示されてから「Homer」などの名前を入力し、「Invoke and Return (呼び出して戻す)」を選択します。
- パラメーター値を提供した後で「invoke (呼び出す)」をクリックしてメソッドをテストします。すべてがうまくいくと、口座の残高が減り、支払いメッセージがコンソールに表示されます。
- 「References (参照)」ビューでmakePayment リンクをクリックして、何回か支払いを試みることができます。
図9 はこのテストのビューを示しています。
図9. テスト結果の表示
おめでとうございます! 以上で、IBM WebSphere StudioおよびXDEツール・スイートで提供されるさまざまなプラグインを使用して、短い開発サイクルでアプリケーションの設計、インプリメント、およびテストを行うことができました。
謝辞
この例を作成するにあたり、IBM WW Toolsのテクニカル・セールスRick Weaver氏、IBM Switzerlandのテクニカル・スペシャリストPatrick Cadonau氏、およびIBM-Rational SwitzerlandのコンサルタントMathias Staub氏の各氏から多大なご協力をいただきました。ご尽力に感謝いたします。
参考文献
ダウンロード | ファイル名 | サイズ | ダウンロード形式 |
|---|
| i-ratstudio.zip | | HTTP |
著者について  | |  | Tad Siminitz氏は南東部でSWITA (ソフトウェアIT設計者) として勤務しています。彼は、ソフトウェアおよびハードウェア開発、コンサルティング、販売、および製品マーケティングと、さまざまな立場で仕事をこなしてきました。APL言語を皮切りに、IBMで 20年以上にわたり、主として言語およびツールに関連する分野に関わってきました。彼は最近までスイスのチューリッヒで勤務し、スイスのいくつかの銀行および保険会社でJ2EE Webベースのインプリメンテーションの初期段階の適用を指導していました。Tadは1981年にBinghamton大学を卒業し (数学専攻)、1984年にSyracuse大学よりコンピューター・エンジニアリングの修士号を取得しています。趣味は、アイス・ホッケー、自転車、オーディオ装置いじりなどです。Tadの連絡先はtad@us.ibm.com です。 |
記事の評価
|