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

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

EJB 3という選択肢

これまでEJB 1.xまたはEJB 2.xを適用・実装してきたアーキテクトや開発者の皆さんは、EJB開発の煩雑さを理解されていることでしょう。これは「第1回:EJBのすべてを知る」で解説したEJBの歴史的背景があるからです。

さて、これからEJBに触れようとしている皆さんは、このような過去を振り返る必要はありません。過去の評判ではじめからEJBを要件定義から外していないでしょうか。これは早合点というものです。

「企業レベルのサーバサイドアプリケーション、トランザクションシステムというものはそう簡単に実現できるものではない」ということは、実際に開発に携わっている皆さんがよくご存知だと思います。この煩雑な仕組みを提供し、性能や機能を担保するものがミドルウェアと呼ばれるソフトウェアです。

これまでトランザクション処理モニタ、メッセージ指向ミドルウェア(MOM)、CORBAなどの多くのミドルウェアの歴史があり、多くの企業システムを支えてきました。言い換えると多くの企業はこのミドルウェアに対して、今でも対価を支払い続けているのです。

これらのミドルウェア分野でのエキスパートが終結して策定され続けているのが、Java EE仕様であり、EJBの仕様です。現時点では、これらミドルウェアのノウハウの集大成がJava EEの仕様であるといっても過言ではないでしょう。このノウハウが凝縮された仕様のコアであるEJB 3を自ら外すことはありません。

EJBコンテナ

再度おさらいになりますが、EJBコンテナはコンポーネントであるEJBの実行環境であり、言い換えると実行フレームワークです。このコンセプトは当初の仕様から継承され続けて、コンテナではコンポーネントから利用できるサービスを提供しています。これらのサービスがこれまでのミドルウェアで培ってきた技術群となっています。以下にEJBコンテナサービスを示します。



サービス 内容 主なアノテーション
トランザクション 宣言型トランザクションによりグローバルトランザクションを実現 @TransactionManagement
@TransactionAttribute
セキュリティ 実行者を制限 @DeclareRoles @RolesAllowed
@RunAs
リモート通信 異なるマシン(Java仮想マシン)からの呼び出しが可能 @Remote
@WebService
インターセプタ メソッドの前後に処理を割り込ませることが可能 @Interceptors
@AroundInvoke
タイマー メソッド実行のスケジュール制御 @Timeout
会話状態管理 クライアントの会話情報を保持 @Stateful
メッセージング メッセージングシステムとの統合で非同期通信を実現 @MessageDriven
永続化 ※1 オブジェクトの永続化 @Entity
表1:EJBコンテナサービス

※注1: JPAでの提供です。JPAについては別の回で説明します。

これらのサービスのほとんどがアノテーション定義で利用することが可能です。なおアノテーションとはJavaのコードにメタデータを記述するためにJava SE 5.0に追加された言語仕様です。



アノテーションの追加でEJB 3
図1:アノテーションの追加でEJB 3

EJBコンテナを利用していれば、これらのサービス実現のために多くのコードを記述しデバッグしたり別のフレームワークを探し出して利用することができるので、改めて他のサービスを購入する必要はありません。つまりPOJO(Plain Old Java Object)にアノテーションを付与するだけでEJBが完成し、同時にこれらのリッチなサービスが利用できるのです。

レッドハット株式会社

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メルマガ会員のサービス内容を見る

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