5.3.2 使用できるコンポーネント
アプリケーションサーバでは,EJB,WebアプリケーションでJPAを使用できます。また,Webアプリケーションからユーザスレッドを使用した場合も,JPAを使用できます。なお,次に示す環境またはライブラリではJPAを使用できません。
-
EJBクライアントアプリケーション環境
-
J2EEアプリケーションクライアント環境
-
コンテナ拡張ライブラリ
JPAを使用できるコンポーネントを次の表に示します。
コンポーネント |
JPAの使用 |
|
---|---|---|
EJB |
Stateless Session Bean(EJB3.0以降)※1 |
○ |
Stateful Session Bean(EJB3.0以降)※1 |
○ |
|
Stateless Session Bean(EJB3.0より前) |
× |
|
Stateful Session Bean(EJB3.0より前) |
× |
|
Singleton Session Bean |
× |
|
EJBに関連づくインターセプタ※1※3 |
○ |
|
Message-driven Bean |
× |
|
Entity Bean |
× |
|
CDI Managed Bean(EJBに注入される場合)と,それに関連づくインターセプタ※4 |
○ |
|
Webアプリケーション |
サーブレット,フィルタ,イベントリスナ(Servlet2.5以降) |
○ |
JSP,JSPのタグハンドラ,JSPのイベントリスナ,JSPのタグライブラリイベントリスナ※2(Servlet2.5以降) |
○ |
|
サーブレット,フィルタ,イベントリスナ(Servlet2.5より前) |
× |
|
JSP,JSPのタグハンドラ,JSPのイベントリスナ,JSPのタグライブラリイベントリスナ(Servlet2.5より前) |
× |
|
CDI Managed Bean(Webコンポーネントに注入される場合)と,それに関連づくインターセプタ※4 |
○ |
(凡例)○:使用できる ×:使用できない
注※1 アプリケーションサーバではEJB3.0のejb-jar.xmlを使用したJPAの定義はできません。このため,@PersistenceUnitや@PersistenceContextなどのアノテーションを使用して,永続化ユニットや永続化コンテキストの参照を定義してください。
注※2 アプリケーションサーバでは,JSPタグライブラリイベントリスナでのアノテーションの使用はできません。JSPタグライブラリイベントリスナでJPAの機能を使用する場合は,web.xmlの<persistence-unit-ref>タグや<persistence-context-ref>タグを使用して永続化ユニットや永続化コンテキストの参照を定義してください。
注※3 AroundConstructに関する非サポート機能については,「15.4 非サポート機能」を参照してください。
注※4 詳細は「5.3.3 CDI Managed BeanでのJPA利用」を参照してください。
- 注意事項
-
Servlet 2.5以降のweb.xmlのmetadata-complete属性にtrueが設定されている場合,Webコンポーネントのアノテーションが読み込まれません。このため,アノテーションを使用して,永続化コンテキストまたは永続化ユニットの参照を定義することはできません。ただし,web.xmlに参照を定義することはできます。