WebSphere Application Server, Version 6.1   
             オペレーティング・システム: AIX , HP-UX, Linux, Solaris, Windows, Windows Vista

             目次と検索結果のパーソナライズ化

TaskNameManager インターフェースの使用

TaskNameManager インターフェースを使用して、現行タスク名をプログラマチックに設定できます。 このインターフェースでは、実行のスレッドと関連付けられている現行タスクのオーバーライド、 および現行タスクのオリジナル・タスクへのリセットの両方が可能です。

このタスクについて

5.x 互換モード属性が選択されている、サーバーで実行中の J2EE 1.3 アプリケーションを除き、 コンテナー管理されているトランザクションまたはコンテナー管理されているアクティビティー・セッションに対して構成されている Enterprise JavaBeans 内では、このインターフェースを使用することはできません。 これは、作業単位の開始時のみ、作業単位のタスクへの関連付けが可能になっているためです。 したがって、タスク名を設定するための呼び出しは、作業単位を開始する前に呼び出す必要があります。 作業単位の開始後に作業単位を指定することはできません。 コンテナー管理される作業単位の実行中にこのインターフェースを呼び出しても、それは単に無視されるだけです。

アプリケーション・プロファイルでは、実行時に操作されるタスクの照会はサポートされていません。 その代わりに、アプリケーションは、アプリケーション管理タスクとして宣言的に構成された論理タスク名と対話します。 論理参照は、アプリケーションの再コンパイルを行わずに、 実タスク名の変更を可能にします。

プログラマチックなタスクの設定は、できるだけ回避します。 宣言的なメソッドを使用した方が、 再開発や再コンパイルを必要とせずに簡単に調整できるよりポータブルな機能になります。

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

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

プロシージャー

  1. アプリケーション管理タスクを構成します。 アプリケーション・プロファイルでは、 プログラマチックに設定されるすべてのタスクに対して、タスク名参照を宣言する必要があります。 タスク名参照は、間接のレベルを導入しているため、 実行時の実際のタスク設定は、再コード化または再コンパイルを必要とせずに、 再組み立てによって調整することができます。 タスク参照として宣言されていないタスク名を設定しようとすると、 必ず例外が発生します。タスク名の設定時に作業単位がすでに開始している場合は、その既存の作業単位はタスク名に関連付けられません。タスク名が設定された後に開始した作業単位だけが、タスクに関連付けられます。
  2. TaskNameManager インターフェースに対して Java Naming and Directory Interface (JNDI) ルックアップを実行します。
    InitialContext ic = new InitialContext();
    TaskNameManager tnManager = ic.lookup
    ("java:comp/websphere/AppProfile/TaskNameManager");
    
    アプリケーション・プロファイル・サービスが使用不可の場合、TaskNameManager インターフェースはネーム・スペースにバインドされません。
  3. タスク名を以下のように設定します。
    try {
    tnManager.setTaskName("updateAccount");
    }
    catch (IllegalTaskNameException e) {
    // task name reference not configured. Handle error.
    }
    // . . .
    //
    
    setTaskName() メソッドに引き渡される名前 (この例では「updateAccount」) は、 実際にはステップ 1 で構成したタスク名参照です。
  4. UserTransaction を開始します。
    注: 5.x 互換モードが設定された J2EE 1.3 アプリケーションを使用している場合、 ステップ 3 で設定したタスク名がアクティブなタスク名になります。 このステップは無視できます。
    J2EE アプリケーションを使用していて、互換モードが設定されていない場合、または J2EE 1.4 アプリケーションを使用している場合にタスクをアクティブにするには、 そのタスク名に対してトランザクションを開始する必要があります。 タスク名のみトランザクションに関連付けすることができます。 さらに、タスク名は、トランザクションの開始時にそのトランザクションに関連付けされ、 トランザクションの存続期間中はそのトランザクションに関連付けられています。 したがって、上記で設定したタスク名は、この時点ではアクティブになっていません。 以下のコード・スニペットによる説明に従って、UserTransaction を開始してください。
    try{
        InitialContext initCtx = new InitialContext();
        userTran = (UserTransaction) initCtx.lookup("java:comp/UserTransaction");
        userTran.begin();
    }
    catch(Exception e){
    }         
    // . . .
    //
    TaskNameManager インターフェースの resetTaskName() メソッドに注意してください。 Application Profile Service のコンソール・ページで 5.x 互換モード属性がサーバーに対して選択され、 そのサーバーで実行中の J2EE 1.3 アプリケーションからタスク名がリセットされない限り、 タスク名はリセットできません。 これは、推奨される操作モードではなく、データベース・アクセス中に予期しないデッドロックが発生する場合があります。setTaskName() メソッド操作の効果を取り消し、 コンポーネントの実行開始時における現行タスク名を再確立するように、5.x 互換モードが設定されている場合のみ、J2EE 1.3 アプリケーションから resetTask( ) を呼び出せます。setTaskName() メソッドが呼び出されていなかった場合、resetTaskName() メソッドは効果ありません。



サブトピック
TaskNameManager インターフェース
関連タスク
トランザクション・サービスの使用
コンテナー管理タスクの Web コンポーネント用構成
コンテナー管理タスクのアプリケーション・クライアント用構成
コンテナー管理タスクの Enterprise JavaBeans 用構成
タスク・トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 5:05:53 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/appprofile/tasks/tapp_usetasknamemanager.html