Enterprise Java Beansとは? わかりやすく解説

Enterprise JavaBeans

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2026/06/06 06:14 UTC 版)

Jakarta Enterprise Beans (EJB) とは、Eclipse Foundationが開発している、JavaBeans仕様と同様のものを、ビジネスロジックをモデル化およびデータの永続化のために作成した、ネットワーク分散型ビジネスアプリケーションのサーバサイドで実現した仕様で、Jakarta EE Platformの一部。Java 8まではEnterprise JavaBeansという名称で、Java Platform, Enterprise Editionの一部だった。セキュリティ機能などを備える。アプリケーションサーバなどで実装されている。

沿革

EJBは元々、OMGCORBAやサンのRMIといった分散オブジェクトに由来する技術であり、RMIをベースにビジネスロジックを実装するコンポーネントとして誕生した。最初の実装はJavaの誕生から3年後の1998年頃に登場している。こうした経緯から、当初策定されたEJBはリモートアクセスを想定した複雑な実装が必須となっており、デプロイメント記述子と呼ばれるXMLの設定ファイルもかかせないものだった。また、Enterprise JavaBeans 1.0では主要な要素としてセッションBeanのみが定義されており、エンティティBeanはオプションという扱いであった。

2001年9月24日のJ2EE 1.4に含まれるEnterprise JavaBeans 2.0では、EJBが分散オブジェクトとして使われることは稀であるという実情を踏まえ、ローカルインタフェースの追加が行われている。またメッセージ駆動型Beanが仕様に組み込まれた。[1]

しかしEJBの仕様は依然複雑なものであり、EJBに代わってより軽量なSpring FrameworkPOJOといった考え方を用いる動きが活発化する。こうした流れを受け、2006年5月11日のJava EE 5に含まれるEnterprise JavaBeans 3.0では、DIやPOJOといった考え方を取り入れる形で仕様の全面的な見直しが行われる。EJBの各クラスは単なるPOJOとなり、J2SE 5.0で導入されたアノテーションによりEJBとしての宣言を行う形式とされた。設定ファイルも不要となり、エンティティBeanは独立した永続化フレームワークであるJava Persistence APIに置き換えられた。[1]

2009年12月10日のJava EE 6に含まれるEnterprise JavaBeans 3.1では、シングルトンセッションBeanの追加や、セッションBeanを中心とするコンポーネントのみを抽出したEJB Liteと呼ばれるサブセットの定義が行われた。[2]

2013年5月18日のJava EE 7, 8に含まれるEnterprise JavaBeans 3.2では、非同期処理のEJB Liteへの導入や不要となったエンティティBeanが仕様から取り除かれるなどした。[3]

2019年8月21日、Jakarta Enterprise Beans 3.2をリリース。Jakarta EE 8に含まれる。Enterprise JavaBeans 3.2と同一で名前が変わっただけである。[4]

2020年11月5日、Jakarta Enterprise Beans 4.0をリリース。Jakarta EE 9, 10, 11に含まれる。パッケージ名が javax.ejb から jakarta.ejb に変更になった。[5]

EJBの種類

EJBは、大きく以下の三つの種類のBeansに分けられる。

セッションBean (Session Bean)
セッションを保持し、一時的なロジックを保存するオブジェクト。以下のような種類がある。
  • ステートフルセッションBean (Stateful Session Bean) : クライアントごとの状態 (State) を保持するセッションBean。
  • ステートレスセッションBean (Stateless Session Bean) : クライアントごとの状態を保持しないセッションBean。
  • シングルトンセッションBean (Singleton Session Bean) : 常に同じインスタンスへのアクセスが保証されているシングルトンなセッションBean。[2]
メッセージ駆動型Bean (Message Driven Bean)
非同期処理の記述など。
エンティティBean (Entity Bean)
永続的なデータを保存するオブジェクト。EJB 3.2で廃止。

EJBの簡単な例を以下に示す。

@Stateless 
public class CustomerService { 
    @PersistenceContext 
    private EntityManager entityManager; 

    public void addCustomer(Customer customer) { 
        entityManager.persist(customer); 
    } 
}

上記のコードは、O/Rマッピングを使用して顧客 (Customer) オブジェクトを永続化DBに保存)するサービスクラス(セッションBean)である。EJBが永続コンテキスト (Persistence context) の管理を行うため、実際にデータを登録するaddCustomer()メソッドは、デフォルトトランザクション管理されたスレッドセーフなメソッドとなる。上記のコードは、EJBのビジネスロジックと永続化に焦点を当てたもので、EJBの特徴的な機能の数々は使用していない。

こうしたEJBのセッションBeanは、以下のように他のクラスから呼び出して使用することができる。以下はWeb層からの呼び出し例である。

@Named	
@RequestScoped
public class CustomerBacking {
    @EJB 
    private CustomerService customerService;

    public String addCustomer(Customer customer) {
        customerService.addCustomer(customer);
        context.addMessage(...); // (省略)メッセージ出力など
        return "customer_overview";
    }
}

上記のコードは、EJBのセッションBeanを@EJBアノテーションにより注入した、Jakarta Faces (JSF) の管理Bean (Managed Bean) である。今度のaddCustomer()メソッドは、UIコンポーネントにおけるボタン操作などを表現している。EJBのセッションBeanとは逆に、この管理Beanにはビジネスロジックに関するコードも永続化に関するコードも含まれていないが、EJBのコードを呼び出すことでそうした処理を実現している。EJBはプレゼンテーション層に依存せず、それらの役割は管理Beanが担う。

EJBコンテナ

EJBを管理し、動作させるための実行環境はEJBコンテナと呼ばれる。EJBコンポーネントが動作するときに利用するデータベースへのコネクションやトランザクションの管理も同時に行う。

EJBコンテナの代表例としてJBossなどが挙げられる。またJakarta EEサーバーはEJBコンテナを含んでいる。

脚注

  1. 1 2 第1回 EJBのすべてを知る”. EJB 3を再考する. Think IT (2007年9月12日). 2014年2月19日閲覧。
  2. 1 2 Java EE6:EJB3.1は、すばらしい進化だ”. infoQ (2010年2月25日). 2014年2月19日閲覧。
  3. What's new in EJB 3.2 ? - Java EE 7 chugging along! (英語). Oracle (2012年11月26日). 2014年2月19日閲覧。
  4. Jakarta Enterprise Beans”. jakarta.ee. 2025年9月27日閲覧。
  5. Jakarta® Enterprise Beans, Core Features”. jakarta.ee. 2025年9月27日閲覧。

関連項目

外部リンク

仕様





固有名詞の分類


英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「Enterprise Java Beans」の関連用語

Enterprise Java Beansのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Enterprise Java Beansのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのEnterprise JavaBeans (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2026 GRAS Group, Inc.RSS