TaskNameManager インターフェース
TaskNameManager は、アプリケーション・プロファイル機能とのプログラマチック・インターフェースです。 現行のタスク名をプログラマチックに設定することはほとんど必要ないため、TaskNameManager インターフェースでは、 実行スレッドと関連付けられている現行タスクの指定変更、 および現行タスクのオリジナルのタスクへのリセットが、両方とも可能になっています。
アプリケーション・プロファイルを使用することにより、ユーザーは、WebSphere Application Server ランタイム環境に対する特定の作業単位を識別することができます。 ランタイムでは、その作業単位の正確な要件に対するサポートを調整することができます。 アクセス・インテントは、現時点では、 アプリケーション・プロファイルの機能を使用するランタイムの唯一のコンポーネントです。 例えば、 1 つのトランザクションはエンティティー Bean を強い更新ロックでロードするように構成し、 別のトランザクションは同じエンティティー Bean をロックなしでロードするように構成することができます。
この機能を実現するため、アプリケーション・プロファイルには、2 つの概念 (「タスク」および「プロファイル」) が導入されています。
タスクとは、作業単位の構成可能な名前のことです。 この場合、作業単位は、トランザクションまたはアクティビティー・セッションのいずれかを意味します。
プロファイルは、単に、エンティティー Bean 上に構成されている一連のアクセス・インテント・ポリシーへのタスクのマッピングです。 Bean の呼び出し (finder メソッド、コンテナー管理関係 (CMR) getter、または動的照会のいずれかによる) が、バックエンド・システムからデータを取り出す必要がある場合は、その要求に関連付けられているアクティブな作業単位のタスクを使用して、トランザクションの正確な要件を判別します。 この同じ Bean は、タスクからプロファイルへのマッピング・コンテキストにロードされ、異なった振る舞いをします。 それぞれのプロファイルにより、開発者は、アプリケーションのアクセス・インテントを再構成することができます。
5.x 互換モード 属性が選択されているサーバーで実行している J2EE 1.3 アプリケーションを除き、コンテナー管理されているトランザクション、またはコンテナー管理されているアクティビティー・セッションに対して構成されている Enterprise JavaBeans 内では、このインターフェースを使用することはできません。それは、作業単位をタスクに関連付けることができるのは、その作業単位が開始したそのときだけだからです。 したがって、タスク名を設定するための呼び出しは、作業単位を開始する前に開始する必要があります。 作業単位の開始後に作業単位を指定することはできません。 コンテナー管理される作業単位の実行中にこのインターフェースを呼び出しても、それは単に無視されるだけです。
TaskNameManager インターフェースは、以下の Java Naming and Directory Interface (JNDI) 検索を使用するすべての J2EE コンポーネントで使用できます。
java:comp/websphere/AppProfile/TaskNameManager
package com.ibm.websphere.appprofile;
/**
* The TaskNameManager is the programmatic interface
* to the application profiling function. Using this interface,
* programmers can set the current task name on the
* thread of execution. The task name must have been
* configured in the deployment descriptors as a task
* reference associated with a task. The set task
* name's scope is the duration of the method
* invocation in the EJB and Web components and for
* the duration of the client process, or until the
* resetTaskName() method is invoked.
*/
public interface TaskNameManager {
/**
* Set the thread's current task name to the specified
* parameter. The task name must have been configured as
* a task reference with a corresponding task or the
* IllegalTaskName exception is thrown.
*/
public void setTaskName(String taskName) throws IllegalTaskNameException;
/**
* Sets the thread's task name to the value that was set
* at, or imported into, the beginning of the method
* invocation (for EJB and Web components) or process
* (for J2EE clients).
*/
public void resetTaskName();
}