Enterprise JavaBeans

Enterprise JavaBeans (EJB) とは



Enterprise JavaBeans (EJB) は、Java EE (現Jakarta EE) 仕様の一部として、サーバーサイドで動作するビジネスアプリケーションの構築を支援するコンポーネントモデルです。JavaBeansの概念を拡張し、ネットワーク分散環境での利用を前提とした機能を備えています。EJBは、主にビジネスロジックの実装とデータの永続化を担い、アプリケーションのセキュリティやトランザクション管理を容易にする役割を果たします。

歴史



EJBは、分散オブジェクト技術であるCORBAやRMIにルーツを持ちます。初期のEJBはRMIをベースに開発され、分散環境での利用を前提とした複雑な実装を必要としていました。設定にはデプロイメント記述子と呼ばれるXMLファイルが必須であり、EJB 1.0ではセッションBeanが主要な要素として定義され、エンティティBeanはオプション扱いでした。

その後、EJB 2.0では、分散オブジェクトとしての利用が少ないという実情を踏まえ、ローカルインターフェースが導入され、メッセージ駆動型Beanが仕様に組み込まれました。しかし、EJBの複雑さは依然として課題であり、より軽量なSpring FrameworkやPOJO(Plain Old Java Object)を利用する動きが活発になりました。

こうした流れを受け、EJB 3.0ではDI(Dependency Injection)やPOJOの概念を取り入れ、仕様が大幅に見直されました。EJBのクラスは単なるPOJOとして扱われるようになり、アノテーションを使ってEJBとしての宣言を行う形式に変わりました。設定ファイルも不要となり、エンティティBeanはJava Persistence API (JPA) に置き換えられました。その後も、EJBは改良が続けられ、EJB 3.1ではシングルトンセッションBeanの追加やEJB Liteと呼ばれるサブセットの定義が行われました。EJB 3.2では、非同期処理のEJB Liteへの導入やエンティティBeanの削除が行われました。

EJBの種類



EJBは、主に以下の3種類のBeanに分類されます。

セッションBean (Session Bean)
クライアントとのセッションを保持し、一時的なビジネスロジックを実装するためのBeanです。以下の種類があります。
ステートフルセッションBean (Stateful Session Bean): クライアントごとの状態を保持します。
ステートレスセッションBean (Stateless Session Bean): クライアントの状態を保持しません。
シングルトンセッションBean (Singleton Session Bean): アプリケーション内で唯一のインスタンスが保証されます。
メッセージ駆動型Bean (Message Driven Bean)
非同期処理を行うためのBeanです。メッセージキューからのメッセージを受信し、処理を行います。
エンティティBean (Entity Bean)
データベースなどの永続的なデータを扱うためのBeanでしたが、EJB 3.2で廃止されました。

EJBの例



以下は、EJBのセッションBeanを用いた簡単な例です。この例では、顧客情報をデータベースに保存する処理をEJBで実装しています。

java
@Stateless
public class CustomerService {
@PersistenceContext
private EntityManager em;

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


このセッションBeanは、O/Rマッピングを使用して顧客オブジェクトを永続化します。EJBコンテナが永続コンテキストを管理するため、addCustomer()メソッドはトランザクション管理されたスレッドセーフなメソッドとなります。

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

java
@ManagedBean
@RequestScoped
public class CustomerManagedBean {
@EJB
private CustomerService customerService;

private Customer customer = new Customer();

public void addCustomer() {
customerService.addCustomer(customer);
}
}


この管理Beanは、EJBのセッションBeanを@EJBアノテーションで注入し、UIからの入力を受け付けて、EJBのメソッドを呼び出します。

EJBコンテナ



EJBコンテナは、EJBを管理・実行するための環境です。EJBコンポーネントが動作する際に必要なデータベース接続やトランザクション管理などのサービスを提供します。JBossなどのアプリケーションサーバーがEJBコンテナを提供しています。

関連項目



Java Persistence API
Spring Framework

外部リンク



Java/communityprocess/maintenance/jsr005/EJB11-Errata.html'>JSR 905: Enterprise JavaBeansTM Specification Version 1.1, Errata Sheet, 5/4/2000
JSR 19: Enterprise JavaBeansTM 2.0
JSR 153: Enterprise JavaBeansTM 2.1
JSR 220: Enterprise JavaBeansTM 3.0
JSR 318: Enterprise JavaBeansTM 3.1

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。