ステートレスセッション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

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30