ステートレスセッションBeanでの実装

2007年10月12日(金)
田澤 孝之

ステートレスセッションBeanでの実装

さて、POJOで実装した銀行処理をEJBにしてみましょう。とはいっても、ここで構える必要はもうありません。

まずPOJOで記述したインターフェースBankControlに、アノテーション@Remoteをクラスに定義(1)します。このEJBはEJBクライアントから呼び出すためにリモートインターフェースが必要になります。もしWebコンテナからのみ利用する場合は@Localと記述することができ ます。EJB仕様ではこのインターフェースを特にビジネスインターフェースと呼びます。


インターフェース BankControl.java

import javax.ejb.Remote;

@Remote                                                ←(1)
public interface BankControl {

   public Account deposit(Account account, int amount);
   public Account withdraw(Account account, int amount);

}

次にEJBの実装クラスBankControlBeanです。このEJBは状態を保持しない設計とするので、ステートレスセッションBeanを適用します。したがって、@StatelessアノテーションをBankControlBeanクラスに定義(1)します。

実装クラスBankControlBean.java

import javax.ejb.Stateless;

@Stateless                                                ←(1)
public class BankControlBean implements BankControl {

   public BankControlBean() {
   }

   public Account deposit(Account account, int amount) {
      account.setBalance(account.getBalance() + amount);
      return account;
   }

   public Account withdraw(Account account, int amount) {
      account.setBalance(account.getBalance() - amount);
      return account;
   }

}

これでEJBは完成です。

このように、EJB 3は通常のJavaクラス(POJO)を実装することとさほど変わりません。EJB 1.x、EJB 2.xで存在していたホームインターフェースやデプロイメント記述子はもう必要ないのです。

EJB 3のビルドとJBoss EAPへのデプロイ

ここではEJBをJBoss Enterprise Application Platform 4.2.0(以下、JBoss EAP)にEJBをデプロイしてみます。JBoss EAPのインストールについては以下の事を参考にしてください。




作成したEJB 3はコンパイル後に、仕様に基づきパッケージ化する必要があります。しかし、あまり難しく考えることはありません。javacコマンドを利用して作成した クラスをコンパイルし、jarコマンドを利用してJARファイルにアーカイブするのみです。一般的にこのプロセスはAntを利用するのがよいでしょう。

以下にビルドファイルの例を示します。

Antビルドファイル build.xml

Antビルドファイル build.xml
(画像をクリックすると別ウィンドウに拡大図を表示します)

このビルドファイルを用いてmainターゲット(1)を実行するとbuild/jarsディレクトリにejb3bankapp.jarが作成されます。なお、コンパイル時のクラスパスにはサーバディレクトリのlibディレクトリにあるすべてのJARファイルを指定してください。



>ant main

   生成されたejb3bankapp.jarを展開すると以下のようになります。



EJB JARファイルのディレクトリ構成
図4:EJB JARファイルのディレクトリ構成

次にdeployターゲット(2)を実行するとJBoss EAPのdeployディレクトリにejb3bankapp.jarがコピーされ自動的にデプロイされます。



>ant deploy

JBoss EAPのデプロイはサーバディレクトリにあるdeployディレクトリにJARファイルをコピーするのみです。デプロイが正常に完了すると、コンソールに以下のメッセージが表示されます。


デプロイメッセージ
図5:デプロイメッセージ
(画像をクリックすると別ウィンドウに拡大図を表示します)

次回はデプロイが完了したEJBにリモートクライアントからアクセスしてみます。さらにステートフルセッションBeanも利用してみます。

レッドハット株式会社

JBossグループ SE部 マネージャー
1989年より日立製作所にてIT業界に身をおく。1998年より日本BEAシステムズにてTPモニタ、サーバサイドJavaにフォーカス。特にJ2EE に特化しプリセールス、インストラクタ、SOAコンサルタント業務に従事。2006年よりファストサーチ&トランスファで企業向けサーチソリュー ションコンサルタントを経て、2007年よりレッドハットにてJBossの販売提案と導入技術支援を行う。「EJB 2.0 徹底攻略」(技術評論社)など著書、共著多数。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています