選択されたアクティビティのトランザクションからの除外
非同期フレームワークは、ユーザートランザクションの処理に関連しない低レベルの非同期メカニズムを使用します(たとえば、負荷に応じてスレッドプールが自動的に拡大および縮小したり、フレームワークが初めて使用する自身のスレッドプールを初期化します)。ライフサイクルが個々のアプリケーション トランザクションにバインドされていないため、これらのコンテキストで使用されているスレッドを無視する必要があります。
このような非同期コンポーネント(通常はスレッドやその他の Runnable)の除外を容易にするために、Executor モードには、app-agent-config.xml キャプチャ抑制と呼ばれるメカニズムがあります。抑制は、app-agent-config.xml の async-config セクションの抑制ルールによって特定のメソッドに関連付けられます。デフォルトで提供されるこのようなルールの次の例を考えてみます。
<job>
<match-class type="matches-class"><name filter-type="EQUALS" filter-value="java.util.concurrent.ThreadPoolExecutor"/></match-class>
<match-method><name filter-type="EQUALS" filter-value="addWorker"/></match-method>
<action type="suppression"/>
</job> ThreadPoolExecutor クラスの addWorker java.util.concurrent.ThreadPoolExecutor ThreadPoolExecutor メソッドは、新しいワーカースレッドが作成、開始、プールに追加されるたびに、 によって呼び出されるプライベートメソッドです。このようなスレッドは、作成時点で個々のトランザクションに直接関連付けられていないため、抑制ルールは、このメソッド内で発生する非同期タスクハンドオフがトランザクションに関連付けられないようにするために使用されます。その後、これらのスレッドによって実行される非同期タスクは、タスクを作成したトランザクションに関連付けられます。