ビジネスロジックの実装(1)
さて、次はいよいよ今回の話題の中心であるEnterpriseBeanの実装に入る。準備はいいだろうか。
EnterpriseBeanの実装をすべて手動で行うのは大変なので、VAJ(IBM VisualAge for Java V3.5 エンタープライズ版)を使って開発することにする。
エンティティBeanの作成、DB表の作成、テスト
まずわかりやすいところでエンティティBeanから作っていくことにしよう。
VAJのEJBページを開き、[EJB]→[追加]→[EJBグループ]と選択するか、EJBグループ追加のボタンを押し、プロジェクト名とEJBグループの名前を入力する。これによって、VAJのプロジェクトが作られ、その中にEJBグループが作成される。
EJBグループとは、EJBをJARファイルにするときの単位である。次に、このEJBグループにエンティティBeanを追加しよう。作成されたEJBグループを右クリックして、[追加]→[エンタープライズBean]を選択する。
画面の通り、Bean名に「userinfoEntity」、Bean型に「コンテナー管理の永続性(CMP)フィールドを持つ実体Bean、パッケージに「atmarkit2.ejb」を指定して、[次へ]を押す。
Beanクラスの属性およびインターフェイスの定義画面にて、CMPフィールドを追加する。[追加]ボタンを押す。
フィールド名「userid」、フィールドの型「String」を指定し、「キー・フィールド」をチェックして[CMPフィールドの作成および続行]ボタンを押す。
ここで追加し忘れたり、後でプロパティが増えた場合でも、エンティティ・Beanのアイコンを右クリックして[追加]→[CMPフィールド]とすることでCMPフィールドはいつでも追加することができる。
CMPフィールドとして追加されたフィールドは、自動的にプロパティの設定(ディプロイメント・ディスクリプタに反映される)と、リモートインターフェイスへの追加が行われるので、非常に楽に作業ができる。
同様に、フィールド名「password」、フィールドの型「String」を指定して[終了]を押す。前の画面に戻るので、終了を押すとBeanが作成される。
次にデータベース表を作成しよう。スタートニューから[プログラム]→[IBM DB2]→[コントロール・センター]を開き、データベースのフォルダを右クリックして[作成]→[データベース]を選択して、データベース「ATMARKIT」を作成する。DB2のコマンドウィンドウから「CREATE DB ATMARKIT」とやってもよい。
次にやらなければいけないのはデータベースマッピングの作成と配置コードの作成である。EJBグループのアイコンを右クリックして、[追加]→[EJBグループからスキーマおよびマップ]を選ぶとマッピング情報が、[配置コードの生成]を選ぶと配置コードが生成される(注:配置コードとは、EJBコンテナに依存するスタブ、スケルトン、DBアクセスコードなどのプログラムファイルであり、コンテナに付属するツールでこれを行う)。
VAJでエンティティBeanのDB表を作成するには、テスト用のサーバに登録する必要がある。EJBグループのアイコンを右クリックして[追加先]→[サーバー構成]と選択するとサーバ・インスタンスがEJBサーバ構成に追加される。
追加されたEJBサーバを右クリックして「プロパティ」を開き、データソース名に「jdbc:db2:atmarkit」、ユーザID/パスワードにDB2にアクセスする場合のユーザID(例えば、DB2ADMIN)などを指定してOKを押す。
次いで[EJBサーバー]を右クリックして[データベース表の作成]を押すと、表(ここではUSERINFOENTITY)が作成される。
さあ、これで実行の準備ができた。VAJを使って稼働テストをしてみよう。稼働テストは、最初に紹介したように次の手順を行う。
- WebSphereテスト環境コントロール・センターを開き、パーシスタンス・ネームサーバを開始する
- テストサーバを開始する
- ビーンのテスト・クライアントを起動する
- ルックアップボタンを押してルックアップを行う
- createを選択してパラメータ(ここではユーザID)を指定して右クリックして「呼び出し」
- setPasswordを右クリックしてパラメータ(ここではパスワード)を指定して右クリックして「呼び出し」
これらの手順がすべてうまくいけば、データベース表に行が追加されるはずだ。
DB2コマンド行プロセッサを開いて、確認してみよう。
ということで、CMPエンティティBeanは、コーディング無しで出来上がった。
Copyright © ITmedia, Inc. All Rights Reserved.