2.4.3 Portable Global JNDI名の命名規則
Portable Global JNDI名には標準アプリケーション名,標準モジュール名,およびEnterprise Bean名が含まれています。これらの名前はJava EEで命名規則や使用できる文字が定義されています。
ここでは,Portable Global JNDI名に使用される標準アプリケーション名,標準モジュール名,Enterprise Bean名の命名規則,および使用できる文字について説明します。
- 〈この項の構成〉
(1) 標準アプリケーション名の命名規則
標準アプリケーション名は次の規則で設定されます。
アプリケーションの前提条件 |
標準アプリケーション名 |
|||
---|---|---|---|---|
J2EEアプリケーション(EARファイル) |
application.xmlがある |
<application-name>タグがある |
値がある |
<application-name>タグの値※1 |
値が空文字※2 |
デフォルトの標準アプリケーション名※3 |
|||
<application-name>タグがない |
− |
|||
application.xmlがない |
− |
− |
||
WARアプリケーション (WARファイル) |
cjimportwarコマンドの-nameオプションに指定がある |
cjimportwarコマンドの-nameオプションの値※1 |
||
cjimportwarコマンドの-nameオプションに指定がない |
デフォルトの標準アプリケーション名※3 |
アプリケーションの前提条件 |
デフォルトの標準アプリケーション名 |
|
---|---|---|
J2EEアプリケーション (EARファイル) |
アーカイブ形式 |
EARファイルのファイル名から拡張子を除いた文字列。 ただし,ピリオド「.」がファイル名の先頭にしかない場合は拡張子を除かない。※ |
展開ディレクトリ形式 |
|
|
WARアプリケーション (WARファイル) |
アーカイブ形式 |
WARファイルのファイル名から拡張子を除いた文字列。 ただし,ピリオド「.」がファイル名の先頭にしかない場合は拡張子を除かない。 |
展開ディレクトリ形式 |
WARディレクトリのディレクトリ名。 |
標準アプリケーション名に指定できる値を次に示します。
- <application-name>タグで指定する標準アプリケーション名
-
標準アプリケーション名は,半角英数字(0〜9,A〜Z,a〜z),および次の特殊文字の場合に登録されます。
スペース( ),エクスクラメーションマーク(!),ダブルクォーテーション("),シャープ(#),ドル記号($),パーセント(%),アンパサンド(&),シングルクォーテーション('),バーレン(()()),アスタリスク(*),プラス(+),コンマ(,),ハイフン(-),ピリオド(.),コロン(:),セミコロン(;),レスザン(<),イコール(=),グレーターザン(>),クエスチョン(?),単価記号(@),ブラケット([)(]),円マーク(\),キャレット(^),アンダースコア(_),バッククォート(`),ブレイス({)(}),ストローク(|),およびチルダ(~)
ただし,次の名称は登録されません。
-
先頭または末尾がピリオド(.)の名称
-
ピリオド(.)だけの名称
-
文字列長が256文字以上の名称
-
「env」と一致する名称
-
- <display-name>タグで指定する標準アプリケーション名
-
標準アプリケーション名(<display-name>タグの値)は,半角英数字(0〜9,A〜Z,a〜z),プラス(+),ハイフン(-),ピリオド(.),アンダースコア(_),およびキャレット(^)の場合に登録されます。
ただし,次の名称は登録されません。
-
先頭または末尾がピリオド(.)の名称
-
ピリオド(.)だけの名称
-
文字列長が1文字未満の名称
-
文字列長が256文字以上の名称
-
「env」と一致する名称
-
- 登録されない名称の例
-
foo/bar,.foo,.foobar.,env
標準アプリケーション名が登録できない名称の場合,アプリケーション開始時にKDJE47710-Wが出力され,アプリケーションの開始処理は続行されます。ただし,そのアプリケーションに含まれるすべてのオブジェクトに対してPortable Global JNDI名の登録はされないため,Portable Global JNDI名でのルックアップはできません。Portable Global JNDI名でのルックアップをする場合は,必要に応じて,DD,EARファイルのファイル名,またはアプリケーションディレクトリのディレクトリ名を命名規則に従って変更してください。
(2) 標準モジュール名の命名規則
標準モジュール名は次の規則で設定されます。
モジュールの前提条件 |
標準モジュール名 |
|||
---|---|---|---|---|
EJB-JARモジュール(EJB-JARファイル) |
ejb-jar.xml がある |
<module-name>タグがある |
値がある |
<module-name>タグの値※1 |
値が空文字※2 |
デフォルトの標準モジュール名※3 |
|||
<module-name>タグがない |
− |
|||
ejb-jar.xml がない |
− |
− |
||
Webモジュール(WARファイル) |
web.xmlがある |
<module-name>タグがある |
値がある |
<module-name>タグの値※1 |
値が空文字※2 |
デフォルトの標準モジュール名※3 |
|||
<module-name>タグがない |
− |
|||
web.xmlがない |
− |
− |
||
リソースアダプタモジュール(RARファイル) |
− |
デフォルトの標準モジュール名※3 |
モジュール |
J2EEアプリケーションの形式 |
デフォルトの標準モジュール名 |
---|---|---|
EJB-JARモジュール(EJB-JARファイル) |
アーカイブ形式 |
アプリケーションパッケージのルートディレクトリからEJB-JARファイルまでの相対パスから拡張子を除いた文字列。 ただし,ピリオド「.」がEJB-JARファイル名の先頭にしかない場合は拡張子を除かない。 パス区切り文字が「\」の場合は「/」に変換する。 |
展開ディレクトリ形式 |
|
|
Webモジュール(WARファイル) |
アーカイブ形式 |
アプリケーションパッケージのルートディレクトリからWARファイルまでの相対パスから,拡張子を除いた文字列。 ただし,ピリオド「.」がWARファイル名の先頭にしかない場合は拡張子を除かない。 パス区切り文字が「\」の場合は「/」に変換する。 |
展開ディレクトリ形式 |
|
|
リソースアダプタモジュール |
アーカイブ形式 |
アプリケーションパッケージのルートディレクトリからRARファイルまでの相対パスから,拡張子を除いた文字列。 ただし,ピリオド(.)がRARファイル名の先頭にしかない場合は拡張子を除かない。 パス区切り文字が(\)の場合は(/)に変換する。 |
なお,標準モジュール名(<module-name>タグの値)は,半角英数字(0〜9,A〜Z,a〜z),および次の特殊文字の場合に登録されます。
スペース( ),エクスクラメーションマーク(!),ダブルクォーテーション("),シャープ(#),ドル記号($),パーセント(%),アンパサンド(&),シングルクォーテーション('),バーレン(()()),アスタリスク(*),プラス(+),コンマ(,),ハイフン(-),ピリオド(.),区切り文字としてのスラッシュ(/),コロン(:),セミコロン(;),レスザン(<),イコール(=),グレーターザン(>),クエスチョン(?),単価記号(@),ブラケット([)(]),円マーク(\),キャレット(^),アンダースコア(_),バッククォート(`),ブレイス({)(}),ストローク(|),チルダ(~)
ただし,次の名称は登録されません。
-
先頭または末尾がスラッシュ(/)の名称
-
スラッシュ(/)だけの名称
-
スラッシュ(/)が連続する名称
-
先頭または末尾がピリオド(.)の名称
-
ピリオド(.)だけの名称
-
スラッシュ(/)とピリオド(.)が連続する名称
-
文字列長が256文字以上の名称
-
「env」と一致する名称
-
「env/」から始まる名称
-
「AppName」と一致する名称
-
「AppName/」から始まる名称
- 登録されない名称の例
-
/foo,/foobar/,/,foo//bar,bar.,.foobar.,foo/.bar,AppName,AppName/foo,env/foo/bar
標準モジュール名が登録できない名称の場合,アプリケーション開始時にモジュールごとにKDJE47711-Wが出力され,アプリケーションの開始処理は続行されます。ただし,そのモジュールに含まれるすべてのオブジェクトに対してPortable Global JNDI名での登録はされないため,Portable Global JNDI名でのルックアップはできません。Portable Global JNDI名でのルックアップをする場合は,必要に応じて,DD,アプリケーションのディレクトリ名などを命名規則に従って変更してください。
(3) Enterprise Bean名の命名規則
Enterprise Bean名には,半角英数字(0〜9,A〜Z,a〜z),および次の特殊文字の場合に登録されます。
スペース( ),エクスクラメーションマーク(!),ダブルクォーテーション("),シャープ(#),ドル記号($),パーセント(%),アンパサンド(&),シングルクォーテーション('),バーレン(()()),アスタリスク(*),プラス(+),コンマ(,),ハイフン(-),ピリオド(.),コロン(:),セミコロン(;),レスザン(<),イコール(=),グレーターザン(>),クエスチョン(?),単価記号(@),ブラケット([)(]),円マーク(\),キャレット(^),アンダースコア(_),バッククォート(`),ブレイス({)(}),ストローク(|),チルダ(~)
ただし,次の名称は登録されません。
-
先頭または末尾がピリオド(.)の名称
-
ピリオド(.)だけの名称
-
文字列長が256文字以上の名称
-
「ModuleName」と一致する名称
-
「env」と一致する名称
- 登録されない名称の例
-
.foo,.foobar.,ModuleName,env
Enterprise Bean名が登録できない名称の場合,アプリケーション開始時にEnterprise BeanごとにKDJE47712-Wが出力され,アプリケーションの開始処理は続行されます。ただし,そのEnterprise Beanに含まれるすべてのオブジェクトに対してPortable Global JNDI名での登録はされません。なお,Enterprise Bean名が登録できない名称の場合,Portable Global JNDI名でのルックアップはできませんが,それ以外のアプリケーションの機能は従来どおり動作します。
また,指定できる文字列長については,Enterprise Beanのインタフェース(ホームインタフェースまたはビジネスインタフェース)ごとにもチェックされます。例えば,次の文字列長が256文字以上の場合,インタフェースごとにKDJE47713-Wが出力され,そのインタフェース名を指定した形式のPortable Global JNDI名での登録はされません。
Enterprise Bean名の長さ+インタフェースのクラス名※の長さ+1
注※ パッケージ名を含む完全修飾クラス名
なお,EJB 3.1では,インタフェースが省略されている場合は,インタフェースのクラス名の代わりにEnterprise Beanのクラス名が適用されます。
(4) 標準アプリケーション名または標準モジュール名が重複した場合の動作
アプリケーションサーバでは,アプリケーション開始時に,すでに同じ標準アプリケーション名が名前空間に登録されていた場合,KDJE47720-Wが出力され,名前空間に登録されません。これと同様に,同一アプリケーション内ですでに同じ標準モジュール名が名前空間に登録されていた場合,次のメッセージが出力され,名前空間に登録されません。ただし,アプリケーションの開始処理は続行されます。
-
EJB-JAR場合:KDJE47721-W
-
Webアプリケーションの場合:KDJE47722-W
-
リソースアダプタの場合:KDJE47723-W
なお,アプリケーションサーバでは,次の順番でモジュールが登録されます。
-
リソースアダプタ
-
EJB-JAR
-
Webアプリケーション
登録済みの標準アプリケーション名や標準モジュール名と完全に一致していなくても,スラッシュ(/)で区切られた階層の単位で,登録済みのオブジェクトと名称が一致した場合は,重複していると判断されることがあります。次に例を示します。
- 例1
-
次の順番でアプリケーションを開始した場合,標準アプリケーション名が重複していると判断されます。
-
標準アプリケーション名が「foo/bar」のアプリケーションを開始
-
標準アプリケーション名が「foo」のアプリケーションを開始
-
- 例2
-
次の順番でアプリケーションを開始した場合,標準アプリケーション名が重複していると判断されます。
-
標準アプリケーション名が「foo」で,標準モジュール名が「bar」のアプリケーションを開始
-
標準アプリケーション名が「foo/bar」のアプリケーションを開始
-