目指せ! Webアプリケーションエンジニア

第8回EJBを作るための手順

前回の連載では、サーブレットの具体的作成方法について学びました。今回は、業務ロジックすなわちEJBを作る方法について解説します。

これから作るEJB

Javaプログラムを部品化するための規約としてJavaBeansがあります。これを拡張して、トランザクション処理やデータベースアクセス処理などの機能をあらかじめ用意し、開発者が業務ロジックの記述に専念できるようにしたものがEJB(Enterprise JavaBeans)です。

EJBはインターフェースを介して呼び出すため独立性が高く、また永続化クラスを利用してデータをやりとりするのでリクエストをまたがったデータ活用が可能といった特徴があります。

今回も前回と同様、Bankアプリケーションの例を使ってEJBの作り方を説明していきます。Bankアプリケーションは口座間の送金業務を行うアプリケーションで、画面からユーザIDと送金額を入力すると、データベースに格納されている該当ユーザの口座データが更新され、結果が画面に表示されるというものです。このうち、データベースを更新して送金処理を行う部分をEJBで作ります。図1に処理の流れを示します。

図1 Bankアプリケーションの処理の流れ
図1 Bankアプリケーションの処理の流れ

サーブレットはリモートインターフェース経由でEJBの業務ロジックを呼び出します。EJBは処理を行い、データベースから取得したデータを永続化クラスに格納します。処理の完了通知を受け取ったサーブレットは、JSPに処理結果画面の作成を依頼します。JSPは永続化クラスに格納されているデータを取得し、処理結果画面を作成します。

パッケージの作成

まず、関連のあるクラスやインターフェースを管理するためのパッケージを作成します。MyEclipseの[新規]ダイアログのメニューで「パッケージ」を選択し、表示されたダイアログでパッケージ名称などを指定します。ここではパッケージ名をbank.ejbとします。

図2 パッケージの作成
図2 パッケージの作成

EJBの実装クラスの作成

作成したパッケージに、実際の業務を処理する部分となる実装クラス(BankEJB)を作成し、業務処理を記述していきます。まず、MyEclipseの[新規]ダイアログのメニューで「クラス」を選択し、実装クラスのひな形を作成します。

図3 実装クラスの作成
図3 実装クラスの作成

BankEJBはStateful Session Beanとして実装します。アノテーションを使って、次のように記述します。

@Stateful(name = "BankEJB")

次に、BankEJBを呼び出すリモートインターフェースを指定します。これもアノテーションを使います。リモートインターフェース名はBankIFですが、アノテーションではクラスファイル名を指定するため、次のように記述します。

@Remote(value = BankIF.class)

アノテーションは、記述したい場所に「@」を入力して[Ctrl]+[スペース]キーを押すと図4のように一覧表示されるので、その中から選択します。

図4 アノテーションの記述
図4 アノテーションの記述

次に、データベースの更新など、業務ロジックを記述していきます。

リモートインターフェースの作成

MyEclipseの[新規]ダイアログのメニューで「インターフェース」を選択してひな形を作成します。生成されたリモートインターフェースに、EJBとして呼び出す実装クラスのメソッドなどを記述します。

図5 リモートインターフェースの作成
図5 リモートインターフェースの作成

永続化クラスの作成

データベースから取得したデータを格納するための永続化クラス(BankItem)を作成します。MyEclipseの[新規]ダイアログのメニューで「クラス」を選択し、クラス名などを指定します。

図6 永続化クラスの作成
図6 永続化クラスの作成

永続化クラスには、java.io.Serializableインターフェースを実装する必要があります。⁠インターフェース]【追加】ボタンをクリックすると[実装されたインターフェースの選択]ダイアログが表示されるので「Serializable」と入力します。すると、図7のように前方一致の検索結果が一覧表示されるので、⁠Serializable - java.io -[jdk]]を選択し、java.io.Serializableインターフェースを追加します。

図7 インターフェースの選択
図7 インターフェースの選択

作成されたひな形に、データベースから取得したデータを格納するためのプライベートフィールド(クラスの内部で使用する変数)と、そのプライベートフィールドにアクセスするためのset/getメソッドを実装します。

これでJSP、サーブレット、EJBの作成が終わりました。次回は、作成したJSP、サーブレットおよび、EJBを管理するプロジェクトの定義情報を編集してアプリケーションサーバ上で実行可能な状態にする手順について解説します。

ココがポイント

今回のポイントとなるのは、以下の用語です。これらの説明ができるようにしておきましょう。

  • EJBパッケージ
  • EJBの実装クラス
  • リモートインターフェース
  • 永続化クラス
Cosminexusでホッと一息 ~Cafe Cosminexus
URL:http://www.cosminexus.com

おすすめ記事

記事・ニュース一覧