Enterprise Beanの生成
EJB2.0/EJB2.1に準拠したEnterprise Beanを追加、生成するには、Enterprise Beanウィザードで作成します。
Enterprise Beanウィザードは、以下のEnterprise Beanを作成することができます。
Stateless Session Bean
Stateful Session Bean
EJB2.x Container-managed persistence Entity Bean
Bean-managed persistence Entity Bean
Point-To-Point model Message-driven Bean
Publish/Subscribe model Message-driven Bean
ポイント
EJB2.1形式のContainer-managed persistence Entity Beanを作成する場合は、[EJB2.0 Container-managed persistence Entity Bean]を選択してください。
注意
Enterprise Beanは単一のソースフォルダに作成してください。
deployment descriptorファイルはソースフォルダ配下に格納されるため、1つのプロジェクトの複数のソースフォルダにEnterprise Beanを作成するとdeployment descriptorが複数作成されてしまいます。この状態でJAR形式にアーカイブすると、同じ名前のファイルが存在することが原因でエラーになります。
Enterprise Beanは、新規ウィザードから[EJB] > [J2EE] > [Enterprise Bean]を選択し、ウィザードで作成後、生成されたJavaソース、deployment descriptorなどを編集します。
Enterprise Beanウィザードでは、Enterprise Bean生成に関する基本情報やEnterprise Bean種別などを指定します。
Stateless Session Beanの作成
Session Beanは、クライアントとの対話処理を行うEnterprise Beanです。主に業務処理で必要となる処理(ビジネスロジック)を記述します。
Stateless Session Beanは、複数のメソッドにまたがって、トランザクション状態やEnterprise Beanに定義されている変数の値を保持することができません。そのため、1つのメソッドで完結する機能を提供する場合に使用します。また、複数のクライアントが、同じSession Beanのインスタンスを共有することができるため、サーバの負荷を軽減することができます。
Enterprise Beanウィザードでは、以下の情報を指定します。
Enterprise Beanの基本情報の指定を行います。
パッケージ名、クラス名等を入力します。
Session Beanオプションの指定を行います。
トランザクション管理種別を指定します。
ejbCreateメソッド定義の指定を行います。
Enterprise Beanを初期化するためのメソッドを定義します。
初期状態でパラメタなしのejbCreateメソッドが定義されています。ejbCreateメソッドでスローする例外を追加する処理を行いたい場合だけ、初期値を編集する必要があります。
ビジネスメソッド定義の指定を行います。
ビジネスメソッドを追加します。Stateless Session Beanの場合は、処理が完結する単位でメソッドを作成する必要があります。
Stateful Session Beanの作成
Session Beanは、クライアントとの対話処理を行うEnterprise Beanです。主に業務処理で必要となる処理(ビジネスロジック)を記述します。
Stateful Session Beanは、クライアントと1対1に対応し、クライアントから呼び出される複数のメソッドにまたがって、トランザクション状態やEnterprise Beanに定義されている変数の値を保持することができます。そのため、ある機能を提供するうえで複数の手順(メソッド)が必要な場合に使用します。
Enterprise Beanウィザードでは、以下の情報を指定します。
Enterprise Beanの基本情報の指定を行います。
パッケージ名、クラス名を入力します。
Session Beanオプションの指定を行います。
トランザクション管理種別と、SessionSynchronizationインタフェースを実装するかどうかを指定します。
ejbCreateメソッド定義の指定を行います。
Enterprise Beanを初期化するためのメソッドを定義します。
初期値として引数なしのejbCreateメソッドが定義されています。必要に応じて、編集、追加してください。
ビジネスメソッド定義の指定を行います。
ビジネスメソッドを追加します。
Bean-managed persistence Entity Beanの作成
Entity Beanは、データベースなどの永続データをJavaのオブジェクトにマッピングし、複数のクライアントからアクセスできるようにしたものです。
Bean-managed persistenceでは、Entity BeanのソースにSQL文などの永続データへのアクセス処理を記述します。データアクセス処理を直接記述するため、データベース種別に応じた、きめ細かいアクセス制御ができます。
Enterprise Beanウィザードでは、JDBCを使ってデータベースにアクセスする処理のひな型を生成することができます。
Enterprise Beanウィザードでは、以下の情報を指定します。
Enterprise Beanの基本情報の指定を行います。
パッケージ名、クラス名を入力します。
Entity Beanオプションの指定を行います。
データベースアクセスに関する以下の情報などを指定します。
リエントラントにする
Entity Beanが再帰的に呼び出されることを可能とするかどうかを指定します。
データベースアクセス処理を生成する
Enterprise Beanソース上にデータベースアクセス処理のひな型を生成するかどうかを指定します。
SQL文中の表明を変更可能にする
SQL文中の表名を環境プロパティ「TableName」の値を使うようにソースを生成します。スキーマやテーブルが運用環境によって変わる可能性がある場合に指定してください。
Entity検索処理の最適化
通常のEJB規約に準拠したBean-managed persistenceのデータベースアクセス処理のひな型では、検索時にPrimary Keyの取得と永続化フィールドの取得のタイミングが異なるため2度DBに検索しにいきます。このオプションを指定することによりPrimary Key取得時に永続化フィールドの情報も同時に取得し、メモリ上に貯えておくようにソースを生成します。
Recordクラスでデータの取得/設定を行う
Entity Beanの永続化フィールドのデータを、Recordクラスを使用して一度に取得/設定を行うメソッドを生成します。
データソース名
永続化する際に使用するデータソース名を指定します。
永続化フィールド定義の指定を行います。
永続化フィールドを定義します。データベースを参照して永続化フィールドを追加することができます。
ejbCreateメソッド定義の指定を行います。
データベースに永続化データを挿入するためのメソッドを定義します。
初期値として、永続化フィールドまたはレコードクラスを引数に持つejbCreateメソッドが定義されています。必要に応じて、編集、追加してください。
Finderメソッド定義の指定を行います。
永続化データを検索するためのメソッドを定義します。
初期値として、Primary Keyクラスによる検索を行うためのejbFindByPrimaryKeyメソッドが定義されています。必要に応じて、追加してください。
Homeメソッド定義の指定を行います。
EJB2.0/EJB2.1の場合に使用できる機能です。Entity Beanのインスタンスに依存しない処理(例えば、件数のカウントなど)を行うためのメソッドを定義します。必要に応じて、追加してください。
ビジネスメソッド定義の指定を行います。
ビジネスメソッドを追加します。
Container-managed persistence Entity Beanの作成
Entity Beanは、データベースなどの永続データをJavaのオブジェクトにマッピングし、複数のクライアントからアクセスできるようにしたものです。
Container-managed persistenceでは、Entity Beanのソースには永続データへのアクセス処理を記述せず、データベースとのマッピング処理や検索処理をカスタマイズ情報として定義するものです。永続データへのアクセス処理は、カスタマイズ情報をもとにコンテナが行います。そのため、異なるデータソース(データベース種別など)への移植性(ポータビリティ)に優れています。
Enterprise Beanウィザードでは、Interstage EJBサービスのカスタマイズ情報であるCMP拡張情報ファイルを生成することができます。
Enterprise Beanウィザードでは、以下の情報を指定します。
Enterprise Beanの基本情報の指定を行います。
パッケージ名、クラス名を入力します。
Entity Beanオプションの指定を行います。
データベースアクセスに関する以下の情報などを指定します。
リエントラントにする
Entity Beanが再帰的に呼び出されることを可能とするか
Recordクラスでデータの取得/設定を行う
Entity Beanの永続化フィールドのデータを、Recordクラスを使用して一度に取得/設定を行うメソッドを生成します。
データソース名
永続化する際に使用するデータソース名を指定します。
ポイント
データソース名はアプリケーションのターゲットランタイムがJ2EEコンテナかJava EEコンテナかによって書き込まれるファイルが変わります。
J2EEの場合:FJCMP_XXX.xmlの<fujitsu-cmp2x-mapping-definition>/ <datasource-name>
Java EEの場合:sun-ejb-jar.xmlの<sun-ejb-jar>/ <enterprise-beans>/ <cmp-resource>/ <jndi-name>
永続化フィールド定義の指定を行います。
永続化フィールドを定義します。データベースを参照して永続化フィールドを追加することができます。
ejbCreateメソッド定義の指定を行います。
データベースに永続化データを挿入するためのメソッドを定義します。
初期値として、永続化フィールドまたはレコードクラスを引数に持つejbCreateメソッドが定義されています。必要に応じて、編集、追加してください。
Finderメソッド定義の指定を行います。
永続化データを検索するためのメソッドを定義します。
初期値として、Primary Keyクラスによる検索を行うためのfindByPrimaryKeyメソッドが定義されています。必要に応じて、追加してください。
Homeメソッド定義の指定を行います。
EJB2.0/EJB2.1の場合に使用できる機能です。Entity Beanのインスタンスに依存しない処理(例えば、件数のカウントなど)を行うためのメソッドを定義します。必要に応じて、追加してください。
ejbSelectメソッド定義の指定を行います。
EJB2.0/EJB2.1の場合に使用できる機能です。Entity Beanのメソッド内で行う検索処理のためのメソッドを定義します。必要に応じて、追加してください。
ビジネスメソッド定義の指定を行います。
ビジネスメソッドを追加します。
ポイント
CMP Entity BeanではJ2EEコンテナ向けかJava EEコンテナ向けかによって最終的な成果物に以下の違いがあります。
項目 | JavaEEコンテナ | J2EEコンテナ |
---|---|---|
CMP拡張情報ファイル | sun-cmp-mappings.xml | FJCMP_XXXX.xml |
DB定義情報 | sun-ejb-jar.xml | FJCMP_XXXX.xml |
DBテーブル情報 | XXX.dbschema | なし |
Point-To-Point model Message-driven Beanの作成
Message-driven Beanは、非同期通信処理を行うためのEnterprise Beanです。
Point-To-Point model Message-driven Beanでは、送信者から送信された1つのメッセージに対して、ただ1人の受信者が処理を行います。すなわち、メッセージに対して受信者を単独で割り当てる場合に使用します。
Enterprise Beanウィザードでは、以下の情報を指定します。
Enterprise Beanの基本情報の指定を行います。
パッケージ名、クラス名を入力します。
Message-driven Beanオプションの指定を行います。
トランザクション管理種別と、必要に応じてメッセージセレクタを指定します。
Publish/Subscribe model Message-driven Beanの作成
Message-driven Beanは、非同期通信処理を行うためのEnterprise Beanです。
Publish/Subscribe model Message-driven Beanでは、送信者から送信された1つのメッセージに対して、複数の受信者が処理を行います。すなわち、同一のメッセージを複数の受信者に配信する必要がある場合に使用します。
Enterprise Beanウィザードでは、以下の情報を指定します。
Enterprise Beanの基本情報の指定を行います。
パッケージ名、クラス名を入力します。
Message-driven Beanオプションの指定を行います。
トランザクション管理種別、サブスクライバの永続性、必要に応じてメッセージセレクタを指定します。