5.3.2 使用できるコンポーネント

アプリケーションサーバでは,EJB,WebアプリケーションでJPAを使用できます。また,Webアプリケーションからユーザスレッドを使用した場合も,JPAを使用できます。なお,次に示す環境またはライブラリではJPAを使用できません。

JPAを使用できるコンポーネントを次の表に示します。

表5-2 JPAを使用できるコンポーネント

コンポーネントJPAの使用
EJBStateless Session Bean(EJB3.0以降)※1
Stateful Session Bean(EJB3.0以降)※1
Stateless Session Bean(EJB3.0より前)×
Stateful Session Bean(EJB3.0より前)×
インターセプタ
Message-driven Bean×
Entity Bean×
Webアプリケーションサーブレット,フィルタ,イベントリスナ(Servlet2.5以降)
JSP,JSPのタグハンドラ,JSPのイベントリスナ,JSPのタグライブラリイベントリスナ※2(Servlet2.5以降)
サーブレット,フィルタ,イベントリスナ(Servlet2.5より前)×
JSP,JSPのタグハンドラ,JSPのイベントリスナ,JSPのタグライブラリイベントリスナ(Servlet2.5より前)×

(凡例)○:使用できる ×:使用できない

注※1 アプリケーションサーバではEJB3.0のejb-jar.xmlを使用したJPAの定義はできません。このため,@PersistenceUnitや@PersistenceContextなどのアノテーションを使用して,永続化ユニットや永続化コンテキストの参照を定義してください。

注※2 アプリケーションサーバでは,JSPタグライブラリイベントリスナでのアノテーションの使用はできません。JSPタグライブラリイベントリスナでJPAの機能を使用する場合は,web.xmlの<persistence-unit-ref>タグや<persistence-context-ref>タグを使用して永続化ユニットや永続化コンテキストの参照を定義してください。


注意
Servlet 2.5のweb.xmlのmetadata-complete属性にtrueが設定されている場合,Webコンポーネントのアノテーションが読み込まれません。このため,アノテーションを使用して,永続化コンテキストまたは永続化ユニットの参照を定義することはできません。ただし,web.xmlに参照を定義することはできます。