前回の連載では、サーブレットの具体的作成方法について学びました。今回は、業務ロジックすなわちEJBを作る方法について解説します。
これから作るEJB
Javaプログラムを部品化するための規約としてJavaBeansがあります。これを拡張して、トランザクション処理やデータベースアクセス処理などの機能をあらかじめ用意し、開発者が業務ロジックの記述に専念できるようにしたものがEJB(Enterprise JavaBeans)です。
EJBはインターフェースを介して呼び出すため独立性が高く、また永続化クラスを利用してデータをやりとりするのでリクエストをまたがったデータ活用が可能といった特徴があります。
今回も前回と同様、Bankアプリケーションの例を使ってEJBの作り方を説明していきます。Bankアプリケーションは口座間の送金業務を行うアプリケーションで、画面からユーザIDと送金額を入力すると、データベースに格納されている該当ユーザの口座データが更新され、結果が画面に表示されるというものです。このうち、データベースを更新して送金処理を行う部分をEJBで作ります。図1に処理の流れを示します。
サーブレットはリモートインターフェース経由でEJBの業務ロジックを呼び出します。EJBは処理を行い、データベースから取得したデータを永続化クラスに格納します。処理の完了通知を受け取ったサーブレットは、JSPに処理結果画面の作成を依頼します。JSPは永続化クラスに格納されているデータを取得し、処理結果画面を作成します。
パッケージの作成
まず、関連のあるクラスやインターフェースを管理するためのパッケージを作成します。MyEclipseの[新規]ダイアログのメニューで「パッケージ」を選択し、表示されたダイアログでパッケージ名称などを指定します。ここではパッケージ名をbank.ejbとします。
EJBの実装クラスの作成
作成したパッケージに、実際の業務を処理する部分となる実装クラス(BankEJB)を作成し、業務処理を記述していきます。まず、MyEclipseの[新規]ダイアログのメニューで「クラス」を選択し、実装クラスのひな形を作成します。
BankEJBはStateful Session Beanとして実装します。アノテーションを使って、次のように記述します。
次に、BankEJBを呼び出すリモートインターフェースを指定します。これもアノテーションを使います。リモートインターフェース名はBankIFですが、アノテーションではクラスファイル名を指定するため、次のように記述します。
アノテーションは、記述したい場所に「@」を入力して[Ctrl]+[スペース]キーを押すと図4のように一覧表示されるので、その中から選択します。
次に、データベースの更新など、業務ロジックを記述していきます。
リモートインターフェースの作成
MyEclipseの[新規]ダイアログのメニューで「インターフェース」を選択してひな形を作成します。生成されたリモートインターフェースに、EJBとして呼び出す実装クラスのメソッドなどを記述します。
永続化クラスの作成
データベースから取得したデータを格納するための永続化クラス(BankItem)を作成します。MyEclipseの[新規]ダイアログのメニューで「クラス」を選択し、クラス名などを指定します。
永続化クラスには、java.io.Serializableインターフェースを実装する必要があります。[インターフェース]の【追加】ボタンをクリックすると[実装されたインターフェースの選択]ダイアログが表示されるので「Serializable」と入力します。すると、図7のように前方一致の検索結果が一覧表示されるので、[Serializable - java.io -[jdk]]を選択し、java.io.Serializableインターフェースを追加します。
作成されたひな形に、データベースから取得したデータを格納するためのプライベートフィールド(クラスの内部で使用する変数)と、そのプライベートフィールドにアクセスするためのset/getメソッドを実装します。
これでJSP、サーブレット、EJBの作成が終わりました。次回は、作成したJSP、サーブレットおよび、EJBを管理するプロジェクトの定義情報を編集してアプリケーションサーバ上で実行可能な状態にする手順について解説します。
ココがポイント
今回のポイントとなるのは、以下の用語です。これらの説明ができるようにしておきましょう。
- EJBパッケージ
- EJBの実装クラス
- リモートインターフェース
- 永続化クラス
- Cosminexusでホッと一息 ~Cafe Cosminexus
- URL:http://www.cosminexus.com