33.2. EJB 非活性化と ManagedEntityInterceptor


ManagedEntityInterceptor (MEI) は Seam ではオプションのインターセプタです。 有効にすると対話スコープのコンポーネントに適用されます。 MEI を有効にするには org.jboss.seam.init.core コンポーネントで distributabletrue に設定します。 また、 次のコンポーネント宣言を components.xml ファイルに追加または更新することができます。
<core:init distributable="true"/>
Copy to Clipboard Toggle word wrap
これは HTTP Session の複製を有効にしませんが、Seam による EJB コンポーネントまたは HTTP Session 内のコンポーネントいずれかの非活性化の処理を可能にします。
MEI によって、拡張永続コンテキストを 1 つ以上持つ対話の全寿命に渡り、 永続コンテキストによってロードされたエンティティインスタンスは全て管理されているようにします。つまり、 これらのエンティティインスタンスは非活性化イベントによって時期尚早に切り離されることはありません。 これにより拡張永続コンテキストの整合性を維持するため、その整合性が保証されます。
整合性が脅かされる状況として、 拡張永続コンテキストをホストするステートフルセッション Bean の不活性化と HTTP Session の非活性化があります。

33.2.1. 非活性化と永続性の衝突

永続コンテキスト は永続マネージャがデータベースからロードしたエンティティインスタンス (オブジェクト) の保存に使用されます。 永続コンテキスト内には一意のデータベースの記録に対し 1 つのオブジェクトしか存在しません。 記録が永続コンテキストにロードされる場合、 アプリケーションはそのデータベースに対する呼び出しを回避することができるため、よく 1 次レベルキャッシュ と呼ばれます。
永続コンテキスト内のオブジェクトは変更可能であり、 変更後は ダーティ とみなされます。 変更は永続マネージャによって追跡され、 必要に応じてデータベースに移行されます。 このため永続コンテキストはデータベースに対して保留となっている変更を管理します。
データベース指向のアプリケーションは直ちにデータベースに転送しなければならないトランザクション情報をキャプチャします。 この情報は必ずしも 1 画面でキャプチャできるとは限らず、 ユーザーは保留にしている変更に応じるか拒否するかの選択をしなければならない場合があります。
こうしたトランザクション側のことはユーザーにとっては必ずしもわかりやすい必要はありませんでした。拡張永続コンテキストによりトランザクションに関するユーザーの理解は広がります。アプリケーションが必要とする限り変更を保持してから、組み込み永続マネージャ機能で保留している変更をデータベースにプッシュすることができます (EntityManager#flush())。
永続マネージャは オブジェクト参照 でエンティティインスタンスにリンクされます。 エンティティインスタンスはシリアライズ可能ですが永続マネージャはシリアライズできません。 シリアライズはステートフルセッション Bean または HTTP Session のいずれかが非活性化される場合に可能となります。 アプリケーションの動作を継続させるためには、 永続マネージャとそのエンティティインスタンス間の関係を管理する必要があります。 MEI によってこれに対応します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat