このトピックでは、J2EE アプリケーションで ActivitySessions を使用するための高水準タスクの概要を説明します。
このタスクについて
J2EE アプリケーションで ActivitySessions を使用する前に、次のポイントを考慮する必要があります。
- ActivitySession コンテキストの下でアクセスされるアプリケーションは、
アプリケーション・メソッドの処理中に EJB コンテナーによってスローされた javax.transaction.InvalidTransactionException RemoteException を受信できます。 この例外は、ActivitySession ベースの活動化ポリシーを持つ Enterprise Bean のインスタンスが、
グローバルおよびローカルの並行トランザクションに関連する場合に発生します。
- Enterprise Bean が ActivitySession コンテキストに加わって、ActivitySession ベースの操作をサポートできるようにするには、Enterprise Bean を ACTIVITY_SESSION の ActivationPolicy と一緒に構成する必要があります。
TRANSACTION または ONCE の ActivationPolicy を使用して構成された Bean は、ActivationPolicy コンテキストに参加することができません。
- Session Bean は、コンテナー管理 ActivitySession の使用、
または Bean 管理 ActivitySession のインプリメントのいずれかを行えます。
Entity Bean は、コンテナー管理 ActivitySession の使用のみを行えます。 Enterprise Bean のデプロイ時に、Bean のトランザクション・タイプ・デプロイメント属性を Bean 管理またはコンテナー管理になるように設定すると、Bean は ActivitySession 管理に関して Bean 管理またはコンテナー管理のいずれかになるようにデプロイされます。Bean 管理トランザクションを使用する Bean は、Bean 管理 ActivitySession を
使用できます。コンテナー管理トランザクションを使用する Bean は、コンテナー管理 ActivitySession を使用できます。
- Session Bean または J2EE クライアントで、それぞれ固有の ActivitySession を管理するには、ActivitySession を管理する Enterprise Bean または J2EE クライアントの開発の説明に従って、ActivitySession の境界を明示的に区分するコードを作成する必要があります。
次の高水準タスクは、J2EE アプリケーションにおける ActivitySession の使用法を説明しています。
プロシージャー
- 非トランザクション・データ・ストアに永続している 1 つ以上のエンタープライズ Bean を使用する J2EE アプリケーションを開発します。
複数の 1 フェーズ・リソース・マネージャーを調整しなければならないアプリケーションがある場合は、このタスクを使用します。
例えば、パーシスタンスが LocalTransaction リソース・アダプターに代行されている 2 つ以上のエンティティー EJB の場合です。
このシナリオにおいて、アプリケーションが使用する Enterprise Bean は、ActivitySession の
活動化ポリシー、および ActivitySession の境界と ContainerAtBoundary の解決制御を含む
ローカル・トランザクション内包ポリシーを使用します。 EJB 状態データは (コンテナーによって) ActivitySession の完了時に 1 フェーズ・リソース・マネージャーと同期されるため、アプリケーション・コードでは、ActivitySession サポートについて認識する必要はありません。
- エンタープライズ Bean が 1 つのリソース・マネージャーに異なるビジネス・メソッドで複数回アクセスするような J2EE アプリケーションを作成します。
リソース・マネージャー・ローカル・トランザクション (RMLT) をエンタープライズ Bean インスタンスの複数のビジネス・メソッドに拡張する必要がある場合には、このタスクを使用します。
このシナリオにおいて、
アプリケーションが使用する Enterprise Bean は、ActivitySession の活動化ポリシー、および ActivitySession の境界とアプリケーションの解決制御を含むローカル・トランザクション内包ポリシーを使用します。アプリケーション・ロジックは、LocalTransaction Connector によって提供される javax.resource.cci.LocalTransaction インターフェースなどを使用して RMLT の開始および終了を行いますが、同じメソッド内で LocalTransaction を開始したり、
コミットするようには制限されていません。
- ActivitySession を使用して EJB の活動化およびロード・バランシングを使用する
J2EE クライアント・アプリケーションを開発します。 同じクライアント・セッションで、トランザクション・コンテキスト下で実行する必要がなく、あるいは多くの異なる、かつ連続的に実行されるトランザクション下で実行されることが必要で、複数回エンティティー Bean インスタンスにアクセスしなければならないアプリケーションがある場合は、このタスクを使用します。
このシナリオにおいて、
アプリケーション・クライアントが使用する Enterprise Bean には、ActivitySession の活動化ポリシーおよび Enterprise Bean の機能に適したローカル・トランザクション内包ポリシーがあります。 J2EE
クライアント・アプリケーションにより、ユーザーの活動期間が示されます
(例えば、1 つ以上の Enterprise Bean で数多くの対話が発生するサインオン期間など)。 J2EE クライアント・アプリケーションが ActivitySession を開始して、ActivitySession が示す UOW の有効範囲内で Enterprise Bean を呼び出した場合、Enterprise Bean インスタンスは、ActivitySession 境界上でコンテナーによって活動化され、ActivitySession の終了時にコンテナーによって非活性化されるまでアクティブ状態のままになります。 ActivitySession に基づくワークロード類縁性管理は、サービスのプラットフォーム品質です。グローバル・トランザクションが ActivitySession によって完全にカプセル化され、
直列的に実行される場合、これらのトランザクションは ActivitySession 内で開始して終了することができます。 ActivitySession 境界で活動化される EJB インスタンスは、
直列グローバル・トランザクションの間はアクティブのままになっています。
- ActivitySession コンテキストに参加する Web アプリケーション・クライアントを開発します。 WebSphere Web コンテナーで稼働する Web アプリケーションは、ActivitySession コンテキストに加わることができます。 Web アプリケーションは、UserActivitySession インターフェースを使用して、ActivitySession コンテキストを開始および終了できます。 さらに、ActivitySession は、HttpSession と関連付けることにより、
複数の HTTP 起動を介しての ActivitySession へのアクセスが拡張できるほか、EJB の活動化期間のサポートが可能になります。
EJB の活動化期間は、Web HTTP クライアントのライフ・サイクルによって決定することができます。
Web コンテナーは、Web アプリケーション・モジュールに関連付けられたデプロイメント記述子属性に基づいて ActivitySession を管理します。