Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)
アプリケーションに含まれるEJBやサーブレットなどのコンポーネントは,@PersistenceUnitや@PersistenceContextのunitName属性,DDに定義した<persistence-context-ref>タグ下または<persistence-unit-ref>タグ下の<persistence-unit-name>タグで永続化ユニット名を指定して,使用する永続化ユニットを参照します。ただし,各コンポーネントから参照できる永続化ユニットのスコープは,次のとおりになります。
EARで定義した永続化ユニットの名前と,EJB-JARまたはWARで定義した永続化ユニットの名前が重複している場合,EJB-JARまたはWAR内のコンポーネントからは,より狭い範囲で定義された永続化ユニットが優先されます。例えば,EARとWAR内に同じ名前の永続化ユニットが定義されている場合,WARに含まれているコンポーネントからは,WARで定義した永続化ユニットが優先して見えます。EARの中にある永続化ユニットは見えません。
アプリケーションサーバでJPAを使用する場合,コンポーネントが参照する永続化ユニット名を省略すると,次に示すルールで使用する永続化ユニットが決定されます。
なお,次の条件に該当する場合は,使用する永続化ユニットを一つに特定できないため,永続化ユニット名は省略できません。
EARで定義した永続化ユニットの名前と,EJB-JARまたはWARで定義した永続化ユニットの名前が重複している場合,EJB-JARまたはWAR内のコンポーネントからは,より狭い範囲で定義された永続化ユニットが優先して見えます。ただし,永続化ユニットの参照名に「#」文法を使用することで,EARに定義した永続化ユニットを明示的に参照することもできます。「#」文法を使用する場合,永続化ユニット名は次のとおり指定します。
「コンポーネントが含まれるEJB-JARやWARから永続化ユニットルートへの相対パス」#「永続化ユニット名」
例えば,EARのejbs/myEjbs.jarに含まれたEJBから,EARのlib/persistenceUnitRoot.jarに含まれた永続化ユニット「myPersistenceUnit」を参照する場合,参照する永続化ユニット名は「../lib/persistenceUnitRoot.jar#myPersistenceUnit」になります。
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.