Apdesigner プログラマーズガイド
目次 索引 前ページ次ページ

第2部 アプリケーション開発編> 第3章 Enterprise JavaBeans (EJB)を開発する> 3.1 概要

3.1.2 Enterprise Beanの種類

Enterprise Beanには、大きく分けて、以下の種類があります。

Session Bean(セションビーン):
クライアントとの対話処理を行うEnterprise Beanです。主に業務処理で必要となる処理(ビジネスロジック)を記述します。
Entity Bean(エンティティビーン):
データベースシステムなどのデータをJavaのオブジェクトとして扱うためのEnterprise Beanです。
Message-driven Bean(メッセージドリブンビーン):
非同期通信処理を行うためのEnterprise Beanです。EJB2.0でのみサポートされています。

以下に分類とそれぞれの用途について説明します。

+Session Bean(セションビーン)

Session Bean(セションビーン)とは、アプリケーションの業務ロジック(ビジネスロジック)をサーバに配置したもので、複数のクライアントに対して、ネットワークを介してサービスを提供するものです。
Session Beanでは、他のEnterprise Beanを呼び出したり、トランザクションや処理の流れを制御したり、独自の処理を実装することで業務ロジックを実行します。

Session Beanには、以下の2種類があります。

STATEFUL

クライアントと1対1に対応し、クライアントから呼び出される複数のメソッドにまたがって、トランザクション状態やEnterprise Beanに定義されている変数の値を保持することができます。そのため、ある機能を提供する上で複数の手順(メソッド)が必要な場合に使用します。

STATELESS

複数のメソッドにまたがって、トランザクション状態やEnterprise Beanに定義されている変数の値を保持することができません。そのため、1つのメソッドで完結する機能を提供する場合に使用します。また、複数のクライアントが、同じSession Beanのインスタンスを共有することができるため、サーバの負荷を軽減することができます。

以下にSTATEFUL、STATELESSの例を示します。

++STATEFULの例

テキストファイルを1行ずつ読み込む処理の場合は、メソッドの結果を変数(ここではBufferedReader br)に格納し、続けて呼び出すメソッド内で利用する必要があるので、STATEFULとします。

++STATELESSの例

単純な四則演算のような、1回のメソッド呼出しで完結する処理の場合は、クライアントごとに変数を保持する必要がないので、STATELESSにします。

+Entity Bean(エンティティビーン)

Entity Bean(エンティティビーン)とは、データベースなどの永続データをJavaのオブジェクトにマッピングし、複数のクライアントからアクセスできるようにしたものです。
データベースへの直接のアクセスは、Entity Beanで行います。そのため、Entity Beanを呼び出すクライアントは、SQL文などを意識する必要がなく、Javaのオブジェクトにアクセスする事でデータの入出力を行うことができます。

Entity Beanには、以下の2種類があります。

BMP(Bean-managed persistence)

Entity BeanのソースにSQL文などの永続データへのアクセス処理を記述します。データアクセス処理を直接記述するため、たとえば、データベース種別に応じた、きめ細かいアクセス制御ができます。

CMP(Container-managed persistence)

Entity Beanのソースには永続データへのアクセス処理を記述せず、データベースとのマッピング処理や検索処理をカストマイズ情報として定義するものです。永続データへのアクセス処理は、カストマイズ情報をもとにコンテナが行います。そのため、異なるデータソース(データベース種別など)への移植性(ポータビリティ)に優れています。

以下に、永続データ(データベース)とEntity Beanの一般的な対応関係を示します。

また、EJB2.0 Container-managed persistenceでは、リレーションを定義することで、複数のEntity Bean間の情報を関連付けることができます。

+Message-driven Bean(メッセージドリブンビーン)

Message-driven Beanとは、クライアントから送信されたメッセージに対して非同期に処理を行うための基盤を提供するものです。
Message-driven BeanからSession Beanなどを呼び出すことで、その機能を非同期に実行できます。

Message-driven Beanは、メッセージの処理の方法で以下の2種類に分類できます。

Point-To-Pointモデル

送信者から送信された1つのメッセージに対して、ただ1つの受信者が処理を行います。すなわち、メッセージに対して受信者を単独で割り当てる場合に使用します。

Publish/Subscribeモデル

送信者から送信された1つのメッセージに対して、複数の受信者が処理を行います。すなわち、同一のメッセージを複数の受信者に配信する必要がある場合に使用します。

以下にPoint-To-Pointモデル、Publish/Subscribeモデルの送信者と受信者の関係を示します。

++Point-To-Pointモデル

送信者(Sender)がメッセージを送信すると、JMSサーバ上のキューに貯えられます。貯えられたメッセージは1つの受信者(Receiver)に割り当てられて処理されます。

++Publish/Subscribeモデル

送信者(Publisher)がメッセージを送信すると、JMSサーバ上のトピックに貯えられます。貯えられたメッセージはすべての受信者(Subscriber)に割り当てられて各受信者によって処理されます。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright (C) 富士通株式会社 1998-2006