アプリケーション・プロファイル・タスク

タスクとは、名前付きの作業単位のことです。 タスクとは、ランタイム環境がアクセス・インテント・ポリシーを判別するためのメカニズムです。 このアクセス・インテント・ポリシーは、Entity Bean のデータがバックエンド・システムからロードされる際に適用されるポリシーです。

アプリケーション・プロファイルを使用することにより、開発者は、複数のアクセス・インテント・ポリシーによる Entity Bean の構成が可能です。あるアプリケーションに n 個のプロファイルのインスタンスがある場合、各 Bean は n 個のインテント・ポリシーにより構成することができます。

タスクは、作業単位の開始時にトランザクションまたはアクティビティー・セッションに関連付けられます。タスクは作業単位の存続時間の間は変化できませんが、その作業単位の有効範囲内であればどの場所でも使用可能で、その特定の作業単位に対して構成されたアクセス・インテント・ポリシーを提供できます。

アプリケーションのいずれかの部分でアプリケーション・プロファイルを使用するようにエンタープライズ・アプリケーションを構成する場合、 作業単位が known-to-application タスクに関連付けられていると、 アプリケーション・プロファイルは活動中になり、メソッド・レベルのアクセス・インテント構成は無視されます。

Entity Bean が、タスクと関連付けされていない作業単位にロードされる場合、 またはアプリケーション・プロファイルと関連性のないタスクと関連付けされたいる作業単位にロードされる場合、 デフォルトの Bean レベルのアクセス・インテント構成、またはメソッド・レベルのアクセス・インテント構成が適用されます。 作業単位が、アプリケーション・プロファイルにより構成されたタスクと関連している場合は、適当なアプリケーション・プロファイル内の Bean レベルのアクセス・インテント構成が適用されます。

注: アプリケーション・プロファイル構成は、 アプリケーションの有効範囲の構成データです。 いずれかの Enterprise JavaBean (EJB) モジュールにアプリケーション・プロファイル構成が含まれている場合、 その他の EJB モジュールは、その中にアプリケーション・プロファイル構成データが含まれていない場合であっても、アプリケーション・プロファイル・サービスによってすべて暗黙的に規制されます。

例えば、アプリケーションに EJBModule1 と EJBModule2 という 2 つの EJB モジュールがあるとします。

EJBModule1 には AppProfile1 という名前のアプリケーション・プロファイルがあります。 この AppProfile1 は、task1 という名前のタスクにより登録されます。 この task1 は、known-to-application タスク になり、 このアプリケーション内の作業単位に関連付けられたときに実行されます。 known-to-application タスクが存在することにより、 メソッド・レベルのアクセス・インテント構成は無視され、 Bean レベルのアクセス・インテント構成のみが適用されます。

EJBModule2 には、アプリケーション・プロファイル構成データが含まれていません。 すべてのエンティティー Bean が Bean レベルのアクセス・インテントによって明示的に構成されるとは限らず、 一部のメソッドは、メソッド・レベルのアクセス・インテント構成を持っています。 EJBModule2 内のエンティティー Bean が、task1 と関連付けられている作業単位にロードされる場合、Bean レベルのアクセス・インテント構成が適用され、メソッド・レベルのアクセス・インテント構成は無視されます。 Bean レベルのアクセス・インテントは、明示的に設定されず、 デフォルトの Bean レベルのアクセス・インテント wsPessimisticUpdate-WeakestLockAtLoad が適用されます。

アクティブ・タスクは、現行の作業単位のメカニズムに依存します。現行の作業単位がグローバル・トランザクションの場合、タスクはそのトランザクションに関連付けられた名前です。グローバル・トランザクションの開始時に、それに名前が付けられていなかった場合は、そのトランザクションの有効範囲内のどこにもアクティブ・タスクは存在しません。

現行の作業単位が、アクティビティー・セッションに関連付けられているローカル・トランザクションの場合、タスクはそのアクティビティー・セッションに関連付けられた名前です。アクティビティー・セッションの開始時に、それに名前が付けられていなかった場合は、そのアクティビティー・セッションにバインドされているローカル・トランザクションのアクティブ・タスクは存在しません。現行の作業単位が、アクティビティー・セッションに関連付けられていないローカル・トランザクションの場合、タスクはそのローカル・トランザクションに関連付けられた名前です。ローカル・トランザクションが開始時に、 タスクにローカル・トランザクションが関連付けられていなかった場合、 そのローカル・トランザクションの継続時間の間はアクティブ・タスクがありません。 言い換えれば、アクティブ・タスクは、データベース・リソースを調整するスレッド上の作業単位に関連付けられたタスクです。制御側の作業単位の開始時に、その作業単位がタスクに関連付けられていなかった場合は、その作業単位の有効範囲内にはアクティブ・タスクは存在しません。

例えば、学生レコードと対話するため Session Bean を呼び出す学区アプリケーションを考えてみます。 Session Bean のあるメソッドは管理者による学生のレコードの変更を可能にし、あるメソッドは学生が自身のレコードを表示する要求をサポートします。 アプリケーション・プロファイルがない場合は、 この 2 つのタスクは匿名で実行されるため、ランタイム環境は、あるタスクのために実行されている作業と、 別のタスクのために実行されている作業を区別できません。 アプリケーションを最適化するため、開発者は、Session Bean のいずれかのメソッドをタスク「updateRecords」により、Session Bean の他のメソッドをタスク「readRecords」により構成することができます。 「updateRecords」を適当なロック・アクセス・インテントで構成した student Bean を持つアプリケーション・プロファイルに登録すると、このタスクがレコードの読み取りのみを必要とするトランザクションを不必要にブロックすることのないようにできます。 タスクおよび作業単位間の関係について詳しくは、 タスクおよび作業単位における考慮事項 を参照してください。

タスクは、コンテナーで管理するように構成することも、アプリケーションによってプログラマチックに設定するように構成することもできます。 コンテナー管理タスクは、サーブレット、JavaServer Pages (JSP) ファイル、 アプリケーション・クライアント、および Enterprise JavaBeans (EJB) のメソッド上で構成できます。 構成済みのコンテナー管理タスクは、タスク名が設定されたあとにコンテナーが開始する 作業単位とのみ関連付けられます。アプリケーション管理タスクは、 すべての J2EE コンポーネント上で構成できます。エンタープライズ Bean の場合、Bean 管理トランザクションでなければなりません。

ベスト・プラクティス ベスト・プラクティス: アプリケーション・プロファイル・サービスのコンソール・ページで 5.x 互換モード属性を選択すると、 J2EE 1.3 アプリケーションで構成されたタスクは、必ずしも作業単位に関連付けられてはおらず、 任意に適用し、オーバーライドすることが可能です。 これは、推奨される操作モードではなく、データベース・アクセス中に予期しないデッドロックが発生する場合があります。タスクは、 アプリケーション・プロファイル 5.x 互換モードで稼働するアプリケーションと、 互換モードで稼働しないアプリケーションとの間の要求で通信は行いません。

バージョン 6.x クライアントが、アプリケーション・プロファイル 5.x 互換モードで実行するアプリケーションと対話するためには、クライアント・プロセスで appprofileCompatibility システム・プロパティーを true に設定する必要があります。 これは、launchClient コマンドを呼び出すときに -CCDappprofileCompatibility=true オプションを指定することにより可能になります。

best-practices

トピックのタイプを示すアイコン 概念トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=capp_tasks
ファイル名:capp_tasks.html