UML から EJB への変換では、UML (統一 モデリング言語) のモデル要素が、Enterprise Bean および Java コードに変換されます。UML から EJB への変換は、UML から Java への変換と同じですが、UML から EJB への変換 では、EJB 変換プロファイルのステレオタイプでマークされた UML 要素からも Enterprise Bean を生成できます。
UML から EJB への変換を使用する前提 として、UML から Java への変換について知っておく必要があります。
UML 要素と可視化 Enterprise Bean または Java クラスの間の関係 の処理のサポート
「モデル・エクスプローラー」ビュー から、UML - EJB 変換のソースとなるアイテムを 1 つ以上選択 することができます。次の表は、有効なソースとして変換で受け入れられるアイテムの一覧です:
ソース |
結果 |
UML モデル |
モデルに含まれるすべてのパッケージ、クラス、インターフェースを変換する |
UML パッケージ |
パッケージとパッケージに含まれるすべてのクラス、インターフェースを変換する |
UML クラス |
クラスとクラスに含まれるすべての 属性、操作、クラス、およびインターフェースを変換する 注: クラス の親は UML パッケージにする必要があります |
UML インターフェース |
インターフェースとインターフェース に含まれるすべての属性、操作、クラス、および インターフェースを変換する 注: インターフェースの親は UML パッケージにする必要があります |
UML 列挙 |
列挙とすべての列挙リテラルを変換する 注: 列挙 の親は UML パッケージにする必要があります |
ソース・モデルから Enterprise Bean を生成するには、ソース・モデルに EJB 変換プロファイルを適用し、EJB 変換プロファイルのステレオタイプでモデル要素をマークする必要があります。
UML から EJB への変換は、単一の EJB プロジェクトをそのターゲットとして受け入れます。EJB プロジェクトは、クライアント・プロジェクト付きでもなしでも作成できます。 変換を実行すると、 EJB プロジェクト (通常は「ejbModule」) 内で検出された最初 のソース・フォルダーにコードが生成されます。 クライアント・プロジェクトが存在する場合は、 クライアント・プロジェクト (通常「src」) 内で検出された 最初のソース・フォルダーにもコードが生成されます。
EJB プロジェクトに関連する EJB コンテナーのバージョンは、UML から EJB への変換に影響を 与えます。EJB コンテナーの各バージョンは、異なるルール を採用しています。UML から EJB への変換を正しく機能 させ、処理するには、これらのルールに従う必要があります。次の表は、EJB コンテナーの各バージョンに関連するルールの一覧です:
EJB コンテナーのバージョン |
変換に影響するルール |
2.1 |
CMP (コンテナー管理パーシスタンス) 1.1 Bean は、リモート・インターフェースで生成する必要がある |
2.0 |
CMP 1.1 Bean は、リモート・インターフェースで生成する必要がある |
1.1 |
|
上記のルールに従っていない場合、EJB 変換を行ってもソース・モデルは処理されず、したがって何も生成されません。
EJB 変換プロファイルは、 ステレオタイプを定義します。このステレオタイプが、UML から EJB への変換で解釈されることで、Enterprise Bean が生成されます。次の表は、EJB 変換プロファイルが定義するステレオタイプの一覧です:
ステレオタイプ |
ターゲット要素 |
UML から EJB への 変換時の解釈 |
<<エンティティー>> |
UML クラス |
Entity Bean に対応 |
<<サービス>> |
UML クラス |
ステレオタイプのプロパティー hasState が最初偽 (Session Bean がステートレスであることを示す) に 設定される Session Bean に対応 |
<<messageprocessor>> |
UML クラス |
Message-driven Bean に対応 |
<<ID>> |
UML 属性 |
Entity Bean の基本キーの一部として使用される CMP または BMP フィールドに対応 |
<<照会>> |
UML 操作 |
Entity Bean の Query メソッドに対応 |
EJB 変換プロファイルは、次の制約も定義します。
EJB 変換プロファイルを持つモデルを検証すると、これらの制約から警告が生成されます。 UML から EJB への変換を実行する前に、警告を生成している問題を訂正 する必要があります。ただし、警告が出ている場合でも、変換は実行できます。
EJB への変換の構成 ウィンドウには、以下の 6 つのタブが含まれます: 「ターゲット」、「エンティティー」、 「 セッション」、「 詳細」、「マッピング」、 および「共通」。この節では、最初の 3 つのタブが EJB 変換にどのように影響するか説明します。
「ターゲット」タブを使用すると、EJB 変換で出力ファイルを生成するターゲット EJB プロジェクトを選択できます。 EJB プロジェクトが使用可能な場合でも、新規のターゲット・コンテナーを作成できます。 各プロジェクトは単一の EJB コンテナーに関連付けられます。 EJB 変換は、EJB プロジェクト・ウィザードが提供する、利用可能なすべての EJB コンテナーのバージョンをサポートします。
ターゲット EJB プロジェクト・コンテナーのバージョンにより、「エンティティー」タブおよび「セッション」タブで使用可能なオプションが制限される場合があります。 EJB コンテナーの各タイプの制限についての詳細 は、『ターゲット EJB コンテナー』の節を参照してください。
「エンティティー」タブを使用すると、新しく生成される Entity Bean をカスタマイズできます。 「エンティティー」タブでは、次の 2 つの異なる オプションを構成できます: 「Entity Bean タイプ」および「Entity Bean インターフェース」。次の図は、「EJB 変換の構成」ウィンドウの 「エンティティー」タブです:
プロジェクトの EJB コンテナーのバージョンによっては、特定の組み合わせのプロパティーを選択しないと、EJB 変換を実行できない場合があります。 次の表は、変換に対応している Entity Bean のタイプ、Entity Bean がサポートしているインターフェース、およびデフォルトで選択されるインターフェースの一覧です:
EJB コンテナーのバージョン |
Entity Bean タイプ |
Entity Bean に対応しているインターフェース |
デフォルトで選択されるインターフェース |
2.x |
CMP 2.x |
ローカルおよびリモート |
ローカル・インターフェースのみ |
2.x |
CMP 1.1 |
リモート |
リモート・インターフェースのみ |
2.x |
BMP |
ローカルおよびリモート |
ローカル・インターフェースのみ |
1.1 |
CMP 2.x |
該当なし |
該当なし |
1.1 |
CMP 1.1 |
リモート |
リモート・インターフェースのみ |
1.1 |
BMP |
リモート |
リモート・インターフェースのみ |
表内のデフォルトの選択は、Entity Bean 作成ウィザードのデフォルトの動作を反映させてあります。
無効なオプションの組み合わせを選択 すると、「EJB 変換構成」ウィンドウの上部にエラー・メッセージ が表示され、変換を実行する 「実行」ボタン が使用不可になります。有効なオプションの組み合わせを 選択すると、 「実行」 ボタンは使用可能になり、エラー・メッセージは表示されなく なります。
「セッション」タブを使用すると、新しく生成される Session Bean 用のインターフェースの生成をカスタマイズできます。 次の図は、「EJB 変換の構成」ウィンドウの「セッション」タブです:
プロジェクトの EJB コンテナーのバージョンによっては、特定の組み合わせのプロパティーを選択しないと、EJB 変換を実行できない場合があります。 次の表は、変換でサポートされるインターフェースで Session Bean に対応しているもの、対応する EJB コンテナーのバージョン、デフォルトで選択されるインターフェースの一覧です:
EJB コンテナーのバージョン |
Session Bean に対応しているインターフェース |
デフォルトで選択されるインターフェース |
1.1 |
リモート |
リモート・インターフェースのみ |
2.0 |
ローカルおよびリモート |
リモート・インターフェースのみ |
2.1 |
ローカルおよびリモート |
リモート・インターフェースのみ |
無効なオプションの組み合わせを選択 すると、「EJB 変換構成」ウィンドウの上部にエラー・メッセージ が表示され、変換を実行する 「実行」ボタン が使用不可になります。有効なオプションの組み合わせを 選択すると、 「実行」 ボタンは使用可能になり、エラー・メッセージは表示されなく なります。
「詳細」タブについて詳しくは 、UML から Java へ変換の文書を参照してください。
このセクションでは、UML から EJB へ の変換が UML モデルの要素を解釈する方法、 および変換が出力として生成する結果について説明します。
UML から EJB への変換では基本タイプ が解釈されますが、この解釈方法はUML から Java へ変換を実行する場合の解釈方法 と同じです。詳しくは 、UML から Java への変換の文書を参照してください。
UML から EJB への変換ではパッケージ が解釈されますが、この解釈方法 はUML から Java へ変換を実行する場合の解釈方法 と同じです。パッケージは Java のパッケージに変換 されます。詳しくは 、UML から Java への変換の文書を参照してください。
UML から EJB への変換ではマーク解除 されたクラスが解釈されますが、この 解釈方法はUML から Java へ変換を実行する場合の解釈方法 と同じです。クラスは Java クラスに変換されます。詳しくは 、UML から Java への変換の文書を参照してください。
マーク解除されたクラスに含まれている属性のタイプが、<<Entity>>、<<Service>>、または<<MessageProcessor>>・ステレオタイプを持つクラスの属性タイプの場合、変換を行っても属性は生成されません。 その代わりに、ソース属性が変換されないことを示すメッセージがログ・ファイルに書き込まれます。
UML から EJB への変換ではマーク解除 されたインターフェースが解釈されますが、この 解釈方法はUML から Java へ変換を実行する場合の解釈方法 と同じです。インターフェースは Java インターフェースに 変換されます。詳しくは 、UML から Java への変換の文書を参照してください。
マーク解除されたインターフェースに含まれている属性のタイプが、<<Entity>>、<<Service>>、または<<MessageProcessor>>・ステレオタイプを持つクラスの属性タイプの場合、変換を行っても属性は生成されません。 その代わりに、ソース属性が変換されないことを示すメッセージがログ・ファイルに書き込まれます。
UML から EJB への変換ではマーク解除 された列挙が解釈されますが、この 解釈方法はUML から Java へ変換を実行する場合の解釈方法 と同じです。列挙は Java インターフェースに変換されます。 詳しくは、UML から Java への変換の文書を参照してください。
UML から EJB への変換では 、<<Entity>> ステレオタイプでマーク されたクラスは、CMP 2.x、CMP 1.1、または BMP Entity Bean に変換されます。この場合の Bean 名は、ソース UML クラス の名前と同じになります。生成される Entity Bean のタイプは、「Entity」タブの「EJB 変換の構成」ウィンドウで選択したオプションと同じになります。
この変換では必ず次の Entity Bean 用 Java クラスが生成されます:
「エンティティー 」タブで「リモート・ インターフェースのみ」を クリックした場合、この変換では以下の Java クラスが生成されます。
「エンティティー 」タブで「ローカル・ インターフェースのみ」を クリックした場合、この変換では以下の Java クラスが生成 されます。
「エンティティー」タブで「ローカルおよび リモート・インターフェース」をクリックした場合、この変換では以下の Java クラスが生成されます。
この変換では、ソース UML クラスの親パッケージ用に生成されるパッケージ・フォルダー内にすべてのクラスが生成されます。 パッケージを使用せずに UML モデルを 作成した場合、変換を実行すると、ejbs という名前の デフォルトのパッケージが生成されます。
この変換は、ターゲット EJB プロジェクトのソース・ツリーに Bean クラス・ファイルおよびキー・クラス・ファイルを生成します。
この変換は、ターゲット EJB プロジェクトのクライアント・プロジェクトのソース・ツリーに 4 つのインターフェース・ファイルを生成します。 クライアント・プロジェクトが存在しない場合、この変換はターゲット EJB プロジェクトにインターフェース・ファイルを生成します。
この変換は、配置ディスクリプター (ejb-jar.xml) に、Entity Bean を定義するデータを追加 します。
汎化関係
Entity Bean に対応するソース UML クラスが、<<Entity>> ステレオタイプの 別の UML クラスと汎化関係 (拡張関係など) にある場合、UML クラスが示す Entity Bean は、Entity Bean を生成するために EJB スーパークラスになります。
Entity Bean は両方とも同じタイプである必要があります。 つまり、両方の Entity Bean が CMP 2.x、CMP 1.1、BMP のうちのいずれかである必要があります。 例えば、スーパー Bean が CMP 2.x Entity Bean の場合、子 Bean も CMP 2.x Entity Bean である必要があります。 スーパー Bean と変換で生成される子 Bean が同じタイプでないと、その子 Bean は汎化関係を持ちません。
実現関係
Entity Bean に対応するソース UML クラスが、インターフェース要素と実現関係 (実装関係など) にある場合、ソース・インターフェースが表すインターフェース は、4 つのインターフェース (リモート、ホーム、ローカル、 ローカル・ホーム) によって実装されます。
マーク解除された属性 - CMP 2.x
ソース UML クラスの属性は Entity Bean の CMP フィールドに変換され、次の表のプロパティーを持ちます:
CMP 2.x フィールドのプロパティー |
CMP フィールドの値 |
名前 |
フィールド名の先頭文字が小文字に変更 された UML 属性名 |
タイプ |
属性タイプから決定されるタイプ (タイプの マップの表を参照) |
キー・フィールド |
False |
Bean 実装クラスにフィールドを生成 |
False |
getter と setter の生成 |
True |
getter と setter をローカル・インターフェースにプロモート |
True (ローカル・インターフェースが存在する場合) |
getter と setter をリモート・インターフェースにプロモート |
True (リモート・インターフェースが存在する場合) |
IsArray |
UML 属性に有限上限値が含まれる場合は True |
属性タイプが別の CMP 2.x Entity Bean の属性タイプの場合、属性は CMP フィールドには変換されませんが、関連の一部と見なされて、EJB 関係に変換されます。 ただし、属性タイプが、CMP 2.x Entity Bean 以外の Enterprise Bean の属性タイプの場合には、属性は CMP フィールドにも関連にも変換されません。その代わりに、ソース属性が変換されないことを示すメッセージがログ・ファイルに書き込まれます。
マーク解除された属性 - CMP 1.1
ソース UML クラスの属性は Entity Bean の CMP フィールドに変換され、次の表のプロパティーを持ちます:
CMP 1.1 フィールドのプロパティー |
CMP フィールドの値 |
名前 |
フィールド名の先頭文字が小文字に変更 された UML 属性名 |
タイプ |
属性タイプから決定されるタイプ (タイプの マップの表を参照) |
キー・フィールド |
False |
Bean 実装クラスにフィールドを生成 |
False |
getter と setter の生成 |
True |
getter と setter をローカル・インターフェースにプロモート |
False |
getter と setter をリモート・インターフェースにプロモート |
True (常時) |
IsArray |
UML 属性に有限上限値が含まれる場合は True |
属性タイプが別の Entity Bean または Enterprise Bean の属性タイプの場合、属性は CMP フィールドにも関連にも変換されません。 その代わりに、ソース属性が変換されないことを示すメッセージがログ・ファイルに書き込まれます。
マーク解除された属性 - BMP
ソース UML クラスの属性は Entity Bean の BMP フィールドに変換され、次のプロパティーを持ちます:
BMP フィールドのプロパティー |
BMP フィールドの値 |
名前 |
フィールド名の先頭文字が小文字に変更 された UML 属性名 |
タイプ |
属性タイプから決定されるタイプ (タイプの マップの表を参照) |
キー・フィールド |
False |
Bean 実装クラスにフィールドを生成 |
True |
getter と setter の生成 |
True |
getter と setter をローカル・インターフェースにプロモート |
True (ローカル・インターフェースが存在する場合) |
getter と setter をリモート・インターフェースにプロモート |
True (リモート・インターフェースが存在する場合) |
IsArray |
UML 属性に有限上限値が含まれる場合は True |
属性タイプが別の Entity Bean または EJB の属性タイプである場合、属性は BMP フィールドにも関連にも変換されません。 その代わりに、ソース属性が変換されないことを示すメッセージがログ・ファイルに書き込まれます。
<<ID>> 属性 - CMP 2.x および CMP 1.1
<<ID>> 属性がマークされた ソース UML クラスの属性は、CMP フィールドに変換されます が、以下の表に列挙した別のプロパティー値を持ちます。これらの CMP フィールドは、主キーの形成に利用できます。
CMP 2.x および CMP 1.1 フィールドのプロパティー |
CMP フィールドの値 |
名前 |
フィールド名の先頭文字が小文字に変更 された UML 属性名 |
タイプ |
属性タイプから決定されるタイプ (タイプの マップの表を参照) |
キー・フィールド |
True |
Bean 実装クラスにフィールドを生成 |
False |
getter と setter の生成 |
True |
getter と setter をローカル・インターフェースにプロモート |
False |
getter と setter をリモート・インターフェースにプロモート |
False |
IsArray |
UML 属性に有限上限値が含まれる場合は True |
属性タイプが別の Entity Bean または Enterprise Bean の属性タイプの場合、属性は CMP キー・フィールドにも関連にも変換されません。 その代わりに、ソース属性が変換されないことを示すメッセージがログ・ファイルに書き込まれます。
<<ID>> 属性 - BMP
<<ID>> がマークされた ソース UML クラスの属性は、BMP フィールドに変換されます が、以下の表に列挙した別のプロパティー値を持ちます。これらの BMP フィールドは、主キーの形成に利用できます。
BMP フィールドのプロパティー |
BMP フィールドの値 |
名前 |
フィールド名の先頭文字が小文字に変更 された UML 属性名 |
タイプ |
属性タイプから決定されるタイプ (タイプの マップの表を参照) |
キー・フィールド |
True |
Bean 実装クラスにフィールドを生成 |
True |
getter と setter の生成 |
True |
getter と setter をローカル・インターフェースにプロモート |
False |
getter と setter をリモート・インターフェースにプロモート |
False |
IsArray |
UML 属性に有限上限値が含まれる場合は True |
属性タイプが別の Entity Bean または Enterprise Bean の属性タイプの場合、属性は BMP キー・フィールドにも関連にも変換されません。 その代わりに、ソース属性が変換されないことを示すメッセージがログ・ファイルに書き込まれます。
次の図に示すように、変換を行うと生成される CMP および BMP フィールドは、ソース属性のデータ型に基づくデータ型を持ちます:
UML 属性タイプ |
CMP/BMP フィールド・タイプ |
boolean |
boolean |
byte |
byte |
char |
char |
float |
float |
int |
int |
long |
long |
short |
short |
Boolean |
java.lang.Boolean |
Byte |
java.lang.Byte |
Char |
java.lang.Char |
Float |
java.lang.Float |
Integer |
java.lang.Integer |
Long |
java.lang.Long |
Short |
java.lang.Short |
String |
java.lang.String |
その他 |
完全修飾名 |
マーク解除された操作
この変換は、ソース UML クラスのマーク解除された操作を、Entity Bean 上のビジネス・メソッドに変換します。 最初に、操作は、マーク解除された UML クラスの操作と同じ方法で変換されます。 変換は、メソッド名が有効な 大文字の場合、メソッド名の先頭文字を小文字に変更すること によって、小文字の命名を実行します。変換された操作は、いくらか修正され、次の表のクラスに追加されます。
クラス |
メソッドの修正 |
Bean クラス |
変更なし |
ローカル・インターフェース |
インターフェース・メソッド |
リモート・インターフェース |
インターフェース・メソッド 、java.rmi.RemoteException をスローする |
<<Query>> 操作 - CMP 2.x
この変換は、ソース UML クラスでの 」<<query>> 操作を、Finder メソッドと Select メソッドという 2 つのタイプの照会メソッドのいずれかに 変換します。Select メソッドは、CMP 2.x Entity Bean にのみ存在します。
変換により次の表のクラスに修正された Finder メソッドが生成されます:
クラス |
メソッドの修正 |
ローカル・ホーム・インターフェース (ローカル・インターフェースが存在する場合) |
|
リモート・ホーム・インターフェース (リモート・インターフェースが存在する場合) |
|
UML 操作名 |
Finder メソッド名 |
xxx |
findXxx |
findXxx |
findXxx |
FindXxx |
findXxx |
Java 変換で解析された戻り値の型 |
Finder メソッドの戻り値の型 |
マップされたコレクション (Collection、List、Set など) |
java.util.Collection |
<ソース・クラス名>[] |
java.util.Collection |
<ソース・クラス名> または void |
|
<ユーザー定義の型の名前>[] |
java.util.Collection |
<ソース以外のクラス名 (例えば、String、Integer など)>[] |
java.util.Collection |
<ユーザー定義の型の名前> |
Finder メソッドの代わりに Select メソッドを生成 |
<ソース以外のクラス名 (例えば 、String、Integer など)> |
Finder メソッドの代わりに Select メソッドを生成 |
変換で生成された各 Finder メソッドの配置ディスクリプターにクエリーを手動で追加する必要があります。
戻り値の型がソース UML クラスの名前と異なり、Entity Bean のタイプが CMP 2.x の場合、または操作の可視性が private の場合、クエリー操作は Select メソッドに変換されます。
操作の可視性 |
戻り値の型 |
メソッドのタイプ |
private |
ソース・クラス名と同じ |
Select メソッド |
private ではない |
ソース・クラス名と同じ |
Finder メソッド |
private |
ソース・クラス名ではない |
Select メソッド |
private ではない |
ソース・クラス名ではない |
Select メソッド |
この変換は、次の修正を含む Bean クラスの Select メソッドを生成します。
UML 操作名 |
Select メソッド名 |
xxx |
ejbSelectXxx |
selectXxx |
ejbSelectXxx |
SelectXxx |
ejbSelectXxx |
ejbSelectXxx |
ejbSelectXxx |
Java 変換で解析された戻り値の型 |
Select メソッドの戻り値の型 |
マップされたコレクション (Collection、List、Set など) |
コレクション・タイプの完全修飾名 (例えば、java.util.Collection など) |
<ソース・クラス名>[] |
java.util.Collection |
<ソース・クラス名> または void |
ローカル・インターフェース名 |
<ユーザー定義の型の名前>[] |
java.util.Collection |
<ソース以外のクラス名 (例えば、String、Integer など)>[] |
java.util.Collection |
<ユーザー定義の型の名前> |
ユーザー定義の型の名前 |
<ソース以外のクラス名 (例えば 、String、Integer など)> |
ソース以外のクラス名 |
変換で生成された各 Select メソッドの配置ディスクリプターにクエリーを手動で追加する必要があります。
<<Query>> 操作 - CMP 1.1
ソース UML クラスの <<Query>> 操作は、Query メソッドのタイプの 1 つである Finder メソッドに変換されます。CMP 1.1 Entity Bean は Select メソッドをサポートしていません。Select メソッドは CMP 2.x Entity Bean でのみ使用可能です。 したがって、戻り値の型および <<Query>> 操作の可視性に関わらず、Entity Bean のリモート・ホーム・インターフェースには Finder メソッド が変換により生成されます。
次の表に示すように、リモート・ホーム・インターフェースには必ず修正された Finder メソッドが変換により生成されます:
クラス |
メソッドの修正 |
リモート・ホーム・インターフェース |
|
UML 操作名 |
Finder メソッド名 |
xxx |
findXxx |
findXxx |
findXxx |
FindXxx |
findXxx |
Java 変換で解析された戻り値の型 |
Finder メソッドの戻り値の型 |
マップされたコレクション (Collection、List、Set など) |
java.util.Collection |
<ソース・クラス名>[] |
java.util.Collection |
<ソース・クラス名> または void |
リモート・インターフェース名 |
<ユーザー定義の型の名前>[] |
java.util.Collection |
<ソース以外のクラス名 (例えば、String、Integer など)>[] |
java.util.Collection |
<ユーザー定義の型の名前> |
リモート・インターフェース名 |
<ソース以外のクラス名 (例えば 、String、Integer など)> |
リモート・インターフェース名 |
変換で生成された各 Finder メソッドの配置ディスクリプターにクエリーを手動で追加する必要があります。
<<Query>> 操作 - BMP
ソース UML クラスの <<Query>> 操作は、Query メソッドのタイプの 1 つである Finder メソッドに変換されます。BMP Entity Bean はどのバージョンも Select メソッドをサポートしていません。Select メソッドはCMP 2.x Entity Bean でのみ使用可能です。 したがって、戻り値の型および <<Query>> 操作の可視性に関わらず、Bean 実装 クラスには Finder メソッドが変換により生成されます。また、Entity Bean の既存のインターフェースにも、変換により Finder メソッドが生成されます。
変換を行うと、以下の表に示したクラスに修正された Finder メソッドが生成されます:
クラス |
メソッドの修正 |
ローカル・ホーム・インターフェース |
|
リモート・ホーム・インターフェース (リモート・インターフェースが存在する場合) |
|
Bean 実装クラス |
|
UML 操作名 |
Finder メソッド名 |
xxx |
findXxx |
findXxx |
findXxx |
FindXxx |
findXxx |
ejbFindXxx |
findEjbFindXxx |
EjbFindXxx |
findEjbFindXxx |
UML 操作名 |
Finder メソッド名 |
xxx |
ejbFindXxx |
findXxx |
ejbFindXxx |
FindXxx |
ejbFindXxx |
ejbFindXxx |
ejbFindEjbFindXxx |
EjbFindXxx |
ejbFindEjbFindXxx |
Java 変換で解析された戻り値の型 |
Finder メソッドの戻り値の型 |
マップされたコレクション (Collection、List、Set など) |
java.util.Collection |
<ソース・クラス名>[] |
java.util.Collection |
<ソース・クラス名> または void |
|
<ユーザー定義の型の名前>[] |
java.util.Collection |
<ソース以外のクラス名 (例えば、String、Integer など)>[] |
java.util.Collection |
<ユーザー定義の型の名前> |
|
<ソース以外のクラス名 (例えば 、String、Integer など)> |
|
Java 変換で解析された戻り値の型 |
Finder メソッドの戻り値の型 |
マップされたコレクション (Collection、List、Set など) |
java.util.Collection |
<クラス名>[] |
java.util.Collection |
<クラス名> または void |
キー・クラス名 |
内部クラス
無視されます。
内部インターフェース
無視されます。
UML から EJB への変換を実行すると、 <<Service>> ステレオタイプを持つクラスは 、コンテナー管理、ステートレス、またはステートフルの Session Bean に変換されます。この場合の Bean の名前は、 ソース UML クラスの名前と同じになります。この変換では必ず次の Session Bean 用 Java クラスが生成されます:
「セッション 」タブで「リモート・ インターフェースのみ」を クリックした場合、この変換では次の Java クラスが生成 されます。
「セッション 」タブで「ローカル・ インターフェースのみ」を クリックした場合、この変換では次の Java クラスが生成 されます。
「セッション 」タブで「ローカルおよび リモート・インターフェース」をクリックした場合、この変換では次の Java クラスが生成されます。
この変換では、ソース UML クラスの親パッケージ用に生成されるパッケージ・フォルダー内にすべてのクラスが生成されます。 パッケージを使用せずに UML モデルを 作成した場合、変換を行うと、ejbs という名前の デフォルトのパッケージが作成されます。
この変換は、ターゲット EJB プロジェクトのソース・ツリーに Bean クラス・ファイルを生成します。
この変換は、ターゲット EJB プロジェクトのクライアント・プロジェクトのソース・ツリーに 4 つのインターフェース・ファイルを生成します。 クライアント・プロジェクトが存在しない場合、この変換はターゲット EJB プロジェクトにインターフェース・ファイルを生成します。
この変換は、配置ディスクリプター (ejb-jar.xml) に、Session Bean を定義するデータを追加 します。
ステレオタイプのプロパティー - hasState
<<Service>> ステレオタイプを持つ各 UML クラスは、hasState という名前 のステレオタイプのプロパティーを持ちます。 hasState の 値が偽の場合、変換を行うと UML クラスはステートレス Session Bean として生成されます。反対に hasState の値が真の場合、変換を行うと UML クラスはステートフル Session Bean として生成されます。
注: ステレオタイプ・プロパティーは、変換で新規の Session Bean として生成される UML クラスに対してのみ影響します。
デフォルトでは、hasState プロパティーの値は偽です。Session Bean 作成ウィザードの デフォルトの設定が偽だからです。
汎化関係
Session Bean に対応するソース UML クラスが <<Service>> ステレオタイプを持つ 他の UML クラスと汎化関係 (拡張関係など) にあり、その ステレオタイプが同じ hasState プロパティー値を持つ場合 、UML クラスが表す Session Bean は、Session Bean を生成 するために EJB スーパークラスになります。
実現関係
Session Bean に対応するソース UML クラスが、インターフェース要素と実現関係 (実装関係など) にある場合、ソース・インターフェースが表すインターフェースは 4 つのインターフェース (リモート、ホーム、ローカル、ローカル・ホーム) によって実装されます。
属性
この変換は、ソース UML クラスの属性を、Bean クラス内の Java プロパティーに変換します。 属性 の変換方法についての詳細は、UML から Java への変換の文書を参照してください。変換 は、プロパティー名が有効な大文字の場合、プロパティー名の 先頭文字を小文字に変更することによって、小文字の命名を 実行します。
属性のタイプが他の Enterprise Bean のタイプの場合、EJB 変換を行っても、Session Bean に対応するフィールドおよび関連は生成されません。 その代わりに、ソース属性が変換されないことを示すメッセージがログ・ファイルに書き込まれます。
操作
この変換は、ソース UML クラスの操作を、Session Bean 上のビジネス・メソッドに変換します。 最初に、操作は、マーク解除された UML クラスの操作と同じ方法で変換されます。 変換は、メソッド名が 有効な大文字の場合、メソッド名の先頭文字を小文字に変更 することによって、小文字の命名を実行します。変換された操作は、いくらか修正され、次の表のクラスに追加されます。
クラス |
メソッドの修正 |
Bean クラス |
変更なし |
ローカル・インターフェース |
インターフェース・メソッド |
リモート・インターフェース |
インターフェース・メソッド 、java.rmi.RemoteException をスローする |
変換は、操作のパラメーターを基にして 操作の戻り値の型を決定するために、以下のルールを適用し ます。
o 操作に戻り値パラメーターと出力 パラメーターがある
o 操作に複数の出力パラメーターがある
内部クラス
無視されます。
内部インターフェース
無視されます。
UML から EJB へ変換を実行すると 、<<messageprocessor>> ステレオタイプを持つ クラスは、デフォルト・データを持つ Message-driven Bean に 変換されます。この場合の Bean 名は、ソース UML クラスの 名前と同じになります。この変換は、次の Java クラスを生成します。
この変換では、ソース UML クラスの親パッケージ用に生成されるパッケージ・フォルダー内にクラスが生成されます。 パッケージを使用せずに UML モデルを 作成した場合、変換を行うと、ejbs という名前の デフォルトのパッケージが作成されます。
この変換は、ターゲット EJB プロジェクトのソース・ツリーに Bean クラス・ファイルを生成します。
この変換は、配置ディスクリプター ejb-jar.xml に、Message-driven Bean を定義するデータを 追加します。
汎化関係
Message-driven Bean に対応するソース UML クラスが、<<messageprocessor>> ステレオタイプの別の UML クラスと汎化関係 (拡張関係など) にある場合、UML クラスが表す Message-driven Bean は 、Entity Bean が生成されるようにするために EJB スーパークラスになります。
実現関係
無視されます。
属性
この変換は、ソース UML クラスの属性を、Bean クラス内の Java プロパティーに変換します。 属性 の変換方法についての詳細は、UML から Java への変換の文書を参照してください。属性のタイプが他の Enterprise Bean のタイプの場合、EJB 変換を行っても、Session Bean に対応するフィールドおよび関連は生成されません。 その代わりに、ソース属性が変換されないことを示すメッセージがログ・ファイルに書き込まれます。
操作
ソース UML クラスの操作は、変換を行うと、Message-driven Bean ではなく通常の Java メソッドに変換されます。
内部クラス
無視されます。
内部インターフェース
無視されます。
変換を実行すると関連も変換されます が、通常、この変換方法は UML から Java へ変換を実行する 場合の変換方法と同じです。エンドポイント属性が Java の プロパティーに変換されます。
関連のエンドポイントが、<<Entity>>、 <<Service>>、または<<MessageProcessor>> ステレオタイプを持つクラスの場合、変換を行ってもエンドポイントは変換されません。 その代わりに、メタデータ・ディレクトリー内のログ・ファイルに、エンドポイント・プロパティーが変換されなかったことを示すメッセージが書き込まれます。 例外 は <<Entity>> ステレオタイプを持つ 2 つのクラス間の関連で、両方のクラスとも CMP 2.x Bean と して生成されます。変換を行うと、UML の関連は EJB 2.0 の関係に変換されますが、これはコンテナー管理の関係 (CMR) と呼ばれます。 次の表は、関連プロパティーと EJB の関係プロパティーの対応関係をまとめたものです:
関連プロパティー |
EJB 関係プロパティー |
End1 |
BeanA |
End2 |
BeanB |
End1 名 |
BeanB CMR 名 |
End2 名 |
BeanA CMR 名 |
End1 の誘導可能性 |
BeanB の誘導可能性 |
End2 の誘導可能性 |
BeanA の誘導可能性 |
|
|
|
|
次の図は、<<Entity>> ステレオタイプを持つ 2 つの UML クラスを表しています。変換で両方の エンティティー・クラスが CMP 2.x Entity Bean として生成 された場合、クラス間の関連は CMR として生成され ます。
変換後、配置ディスクリプターは AEntity と BEntity 間の CMR を示す エントリーを取得します。次の図に示すように、プロジェクトの配置ディスクリプターは 2 つの CMP 2.x Entity Bean 間の関連を表示することができます。
以下の表は、 変換で依存関係が変換され、<<Entity>>、<<Service>>、または <<messageprocessor>> ステレオタイプを持つ クラスに対応する EJB リファレンスが生成される方法の一覧 です。
UML 依存ソース |
UML 依存 ターゲット |
EJB ターゲット |
<<Entity>> クラス |
<<Entity>> クラス |
EJB リファレンス |
<<Entity>> クラス |
<<Service>> クラス |
EJB リファレンス |
<<messageprocessor>> クラス |
<<Entity>> クラス |
EJB リファレンス |
<<messageprocessor>> クラス |
<<Service>> クラス |
EJB リファレンス |
<<Service>> クラス |
<<Entity>> クラス |
EJB リファレンス |
<<Service>> クラス |
<<Service>> クラス |
EJB リファレンス |
ターゲット Java 2 プラットフォーム、Enterprise Edition (J2EE) プロジェクトに、変換対象の UML クラスと同じ名前および ネーム・スペースを持つ Bean が少なくとも 1 つ含まれて いる場合、再適用シナリオが発生する場合があります。 再適用シナリオ とは、UML モデルのクラスに対して生成された Enterprise Bean のタイプが、既存の Enterprise Bean のタイプと一致 した場合に発生するシナリオです。
生成された Enterprise Bean のタイプが、既存の Enterprise Bean の タイプと非互換の場合、衝突シナリオ (再適用シナリオ) が発生します。衝突 シナリオでは、UML から EJB への変換で既存の Bean が更新 されることはなく、また新規の Enterprise Bean が生成される こともありません。
以下の表は、CMP 2.x Entity Bean の発生する可能性のある再適用シナリオ、 およびそれに対して予想される変換の応答をまとめたものです。
生成されたEnterprise Bean |
既存の Enterprise Bean |
予想されるシナリオ |
変換の応答 |
CMP 2.x |
CMP 2.x |
再適用 |
CMP フィールドおよび メソッドを更新 |
CMP 2.x |
CMP 1.1 |
再適用 |
通常の CMP 1.1-to-CMP 1.1 再適用シナリオの場合 と同じく、CMP フィールドとメソッドを更新 |
CMP 2.x |
BMP |
再適用 |
通常の BMP-to-BMP 再適用 シナリオの場合と同じく、BMP フィールドとメソッドを 更新 |
CMP 2.x |
Session (ステートフルまたはステートレス) |
衝突 |
Session Bean には関与 しない |
CMP 2.x |
Message-driven |
衝突 |
Message-driven Bean には 関与しない |
以下の表は、CMP 1.1 Entity Bean の発生する可能性のある再適用シナリオ、 およびそれに対して予想される変換の応答をまとめたものです。
生成されたEnterprise Bean |
既存の Enterprise Bean |
予想される シナリオ |
変換の応答 |
CMP 1.1 |
CMP 2.x |
再適用 |
通常の CMP 2.x-to-CMP 2.x 再適用シナリオの場合と同じく、CMP フィールドおよび メソッドを更新 |
CMP 1.1 |
CMP 1.1 |
再適用 |
CMP フィールドおよび メソッドを更新 |
CMP 1.1 |
BMP |
再適用 |
通常の BMP-to-BMP 再適用 シナリオの場合と同じく、BMP フィールド、メソッド、および 関連を更新 |
CMP 1.1 |
Session (ステートフルまたはステートレス) |
衝突 |
Session Bean には関与 しない |
CMP 1.1 |
Message-driven |
衝突 |
Message-driven Bean には 関与しない |
以下の表は、BMP Entity Bean の発生する可能性のある再適用シナリオ、 およびそれに対して予想される変換の応答をまとめたものです。
生成されたEnterprise Bean |
既存の Enterprise Bean |
予想される シナリオ |
変換の応答 |
BMP |
CMP 2.x |
再適用 |
通常の CMP 2.x-to-CMP 2.x 再適用シナリオの場合と同じく、CMP フィールドおよび メソッドを更新 |
BMP |
CMP 1.1 |
再適用 |
通常の CMP 1.1-to-CMP 1.1 再適用シナリオの場合と同じく、CMP フィールドとメソッドを 更新 |
BMP |
BMP |
再適用 |
BMP フィールドおよび メソッドを更新 |
BMP |
Session (ステートフルまたはステートレス) |
衝突 |
Session Bean には関与 しない |
BMP |
Message-driven |
衝突 |
Message-driven Bean には 関与しない |
以下の表は 、Session Bean の発生する可能性のある再適用シナリオ、 およびそれに対して予想される変換の応答をまとめたものです。
生成されたEnterprise Bean |
既存の Enterprise Bean |
予想される シナリオ |
変換の応答 |
Session (ステートフルまたはステートレス) |
CMP 2.x |
衝突 |
CMP 2.x Bean には関与 しない |
Session (ステートフルまたはステートレス) |
CMP 1.1 |
衝突 |
CMP 1.1 Bean には関与しない |
Session (ステートフルまたはステートレス) |
BMP |
|
BMP Bean には関与 しない |
Session (ステートフル) |
Session (ステートフル のみ) |
再適用 |
Session Bean のフィールド およびメソッドを更新 |
Session (ステートフル) |
Session (ステートレス のみ) |
衝突 |
ステートレス Session Bean には関与しない |
Session (ステートレス) |
Session (ステートフル のみ) |
衝突 |
ステートフル Session Bean には関与しない |
Session (ステートレス) |
Session (ステートレス のみ) |
再適用 |
Session Bean のフィールド およびメソッドを更新 |
Session (ステートフルまたはステートレス) |
Message-driven |
衝突 |
Message-driven Bean には 関与しない |
以下の表は 、Message-driven Bean の発生する可能性のある再適用 シナリオ、およびそれに対して予想される変換の応答をまとめたものです。
生成されたEnterprise Bean |
既存の Enterprise Bean |
予想される シナリオ |
変換の応答 |
Message-driven |
CMP 2.x |
衝突 |
Message-driven Bean には 関与しない |
Message-driven |
CMP 1.1 |
衝突 |
Message-driven Bean には 関与しない |
Message-driven |
BMP |
衝突 |
Message-driven Bean には 関与しない |
Message-driven |
Session (ステートフルまたはステートレス) |
衝突 |
Message-driven Bean には 関与しない |
Message-driven |
Message-driven |
再適用 |
Message-driven Bean の フィールドおよびメソッドを更新 |
以下の表は 、マーク解除された UML クラスの発生する可能性のある再適用 シナリオ、およびそれに対して予想される変換の応答をまとめたもの です。
UML クラスの ステレオタイプ |
既存の Enterprise Bean |
予想される シナリオ |
変換の応答 |
マーク 解除 |
CMP 2.x |
再適用 |
既存のリモート・ インターフェースの CMP 2.x Entity Bean のフィールドと メソッドを更新 |
マーク 解除 |
CMP 1.1 |
再適用 |
既存のリモート・ インターフェースの CMP 1.1 Entity Bean のフィールドと メソッドを更新 |
マーク 解除 |
BMP |
再適用 |
既存のリモート・ インターフェースの BMP Entity Bean のフィールドとメソッド を更新 |
マーク 解除 |
Session (ステートフルまたはステートレス) |
再適用 |
既存のリモート・ インターフェースの Session のフィールドとメソッドを更新 |
マーク 解除 |
Message-driven |
再適用 |
通常の Java クラスの 生成 |
マーク解除 された UML クラスの再適用シナリオでは、既存の Enterprise Bean のリモート・インターフェースに対するコード・ アップデートが、EJB プロジェクトでビルド・エラーを 引き起こします。これらのビルド・エラーは、リモート・インターフェースで更新されたコードが、リモート・インターフェースの EJB 仕様に準拠していないために発生します。 Enterprise Bean 全体を上書きする場合は、EJB 変換を実行する前に、既存の Enterprise Bean を削除する必要があります。
このセクション では、再適用シナリオに対する変換の応答、および最適用後の 変換でどのような結果になるかについてさらに詳しく 説明します。
CMP 2.x Entity Bean の再適用シナリオが発生した場合、次の変更が行われます。
次のような変更が行われることはありません。
CMP 1.1 Entity Bean の再適用シナリオが発生した場合、次の変更が行われます。
次のような変更が行われることはありません。
BMP Entity Bean の再適用シナリオが発生した場合、次の変更が行われます。
次のような変更が行われることはありません。
Session Bean の再適用シナリオが発生した場合、次の変更が行われます。
次のような変更が行われることはありません。
Message-driven Bean の再適用シナリオが発生した場合、次の変更が行われます。
次のような変更が行われることはありません。
以下の表は、UML から EJB への変換プロセス の関係の一覧です。
UML ソース要素 |
可視化 ターゲット要素 |
関係 のタイプ |
変換 の結果 |
<<Entity>> また は <<Service>> ステレオタイプを持つクラス |
Java インターフェース (UML インターフェース) |
実装 |
生成 Enterprise Bean が可視化 インターフェースを実装 |
<<Entity>> また は <<Service>> ステレオタイプを持つクラス |
Java インターフェース (UML インターフェース) |
実現 |
生成 Enterprise Bean が可視化 インターフェースを実装 |
<<Entity>> ステレオタイプを持つクラス |
可視化 Entity Bean (UML コンポーネント) |
関連 |
CMR 関係 |
<<Entity>>、<<Service>>、また は <<messageprocessor>> ステレオタイプを持つ クラス |
可視化 Entity Bean または Session Bean (UML コンポーネント) |
依存 |
EJB リファレンス |
UML から EJB への変換は、チーム機能 との統合をサポートします。ソースが管理されている環境 で、ターゲット・プロジェクトで変換を実行すると、システム ・プロンプトが表示され、新規ファイルをソース管理に追加 して既存のファイルをチェックアウトするよう要求されます。
UML から EJB への変換は、UML から Java への変換がサポートしているマッピングと同様の マッピングをサポートしています。マッピング・モデルを 設定および使用して変換を実行する方法について詳しくは 、UML から Java への変換の文書を参照してください。
ソース・クラスが Enterprise Bean に変換されるようにマークされている場合、変換を実行すると、ソース・クラスのマップされた名前が、生成される Enterprise Bean の Bean 名として使用されます。
「ソース - ターゲット間の 関係を生成 (Generate Source to Target Relationships)」機能を使用可能にして変換を行う と、生成される Java クラスおよびインターフェースの API ドキュメンテーションにはタグが追加されます。このタグに 含まれている情報により、生成されたファイルと元の UML ソース要素との対応関係をトレースできるツールが使用可能に なります。
生成された Enterprise Bean では、変換で Enterprise Bean 用に生成されたすべての Java ファイルが、ソース・ツー・ターゲットの API ドキュメンテーション・タグを所有しており、それらのタグは それぞれ単一の UML ソース・クラスをポイントしています。
ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2004, 2005. All Rights Reserved.
(C) Copyright IBM Japan 2005.