EJB 【Enterprise JavaBeans】 Jakarta Enterprise Beans
概要
EJB(Enterprise JavaBeans)とは、Java言語の企業システム向け拡張仕様Java EE(Enterprise Edition)の一部で、サーバ上で動作するアプリケーションをソフトウェア部品(コンポーネント)を組み合わせて開発・実行できるようにするもの。EJBを利用したシステムの開発者は必要な機能を「Bean」(ビーン)と呼ばれるJavaクラスとして開発していき、これを繋ぎ合わせてアプリケーションを構築する。BeanはEJBの仕様に準拠したアプリケーションサーバに組み込まれて実行される。
サーバ側でトランザクション処理やDI(Dependency Injection:依存性注入)、セキュリティ制御などの諸機能を提供してくれるため、Beanの開発者はこれらに個別に対応する必要はなく、自らのビジネスロジックの記述に集中できる。
Session Bean (セッションBean)
セッション単位での処理を行う機能を持つBeanをSession Bean(セッションBean)という。Session Beanに記録したデータはBean自身が保持するため、セッションが失われ、Session Beanが破棄されるとデータも同時に破棄される。
Session Beanはさらに、処理状態を保持するSteteful Session Bean(ステートフルセッションBean)、保持しないStateless Session Bean(ステートレスセッションBean)、クライアントに依らず全体で単一インスタンスとなるSingleton Session Bean(シングルトンセッションBean)の3種類に分かれる。
Message-Driven Bean (メッセージ駆動Bean/MDB)
非同期処理を記述できるイベント駆動型のBeanをMessage-Driven Bean(メッセージ駆動Bean/メッセージドリブンBean)という。EJB 2.0で追加された。JMS(Java Message Service)により外部からメッセージを受け取ると起動し、対応する処理を行う。
Entity Bean (エンティティBean)
データベースのレコードなど、特定のデータに対する参照を提供する永続的なBeanをEntity Bean(エンティティBean)という。EJB 3.2で廃止された。
Entity Beanは自身でデータを保持するのではなく、背後にあるデータベース管理システム(DBMS)など、別の記録システムに対するインターフェースを提供する形で動作する。Entity Beanに対して記録を行ったデータはデータベースのレコードとして記録され、Beanが破棄されてもデータの内容は保存される。
永続性をアプリケーション側が維持するBMP(Bean-Managed Persistence)とEJBコンテナ側で管理するCMP(Container-Managed Persistence)の2種類があり、用途に応じて使い分ける。
歴史
最初の仕様はIBMとサン・マイクロシステムズ(Sun Microsystems)により1997年に開発された。分散オブジェクト技術に由来する仕様で複数のサーバに分散したオブジェクトを連携動作させる点に力点が置かれ、複雑な設定ファイルの記述が必要であるなど仕様の煩雑さが普及の足かせとなった。
2007年のEJB 3.0では仕様が一新され、シンプルなJavaクラス(POJO)にEJB独自部分をアノテーションで追加するスタイルに変更されたほか、DIへの対応、エンティティBeanのJPA(Java Persistence API)への移管などが行われた。2009年のEJB 3.1ではさらに仕様を縮減したサブセット(縮小版)であるEJB Liteが定義された。