EJB 3を再考する 2

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

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

田澤 孝之

2007年10月12日 20:00

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が完成し、同時にこれらのリッチなサービスが利用できるのです。

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored