インターフェース ThreadContextProvider
public interface ThreadContextProvider
スレッドコンテキストのサードパーティプロバイダーは、このインターフェースを実装して、スレッドコンテキストのキャプチャーと伝達に参加します。アプリケーションコードは、この
spi
パッケージ内のクラスに決してアクセスしてはなりません。代わりに、アプリケーションコードは、Jakarta Concurrency 仕様で定義されているさまざまなインターフェース (ManagedExecutorService
やContextService
など) を使用します。ThreadContextProvider
の実装と関連するクラスは、サードパーティプロバイダーの JAR ファイル内にパッケージ化されています。実装は、ServiceLoader
SE メカニズムを介して検出可能になります。パッケージ化する JAR ファイルには、次の名前と場所のファイルが含まれている必要があります。META-INF/services/jakarta.enterprise.concurrent.spi.ThreadContextProvider
前述のファイルの内容は、JAR ファイル内で提供される
ThreadContextProvider
実装の完全修飾名をそれぞれ指定する 1 つ以上の行である必要があります。Jakarta EE Product Provider は、
ServiceLoader
を使用して、スレッドコンテキストのキャプチャーと伝播に参加できるThreadContextProvider
の利用可能なすべての実装を識別し、呼び出して現在のスレッドコンテキストをキャプチャーするか、ContextServiceDefinition
の構成またはベンダー固有の構成ごとにデフォルトのスレッドコンテキストを確立する必要があります。また、コンテキスト伝搬構成をオーバーライドするManagedTask.TRANSACTION
などの実行プロパティ。- 導入:
- 3.0
メソッドのサマリー
すべてのメソッド インスタンスメソッド 抽象メソッド 修飾子と型 メソッド 説明 ThreadContextSnapshot
clearedContext(MapSE<StringSE,StringSE> props)
指定された型の空の / クリアされたコンテキストを返します。ThreadContextSnapshot
currentContext(MapSE<StringSE,StringSE> props)
指定されたスレッドコンテキスト型のスナップショットを現在のスレッドからキャプチャーします。StringSE
getThreadContextType()
このThreadContextProvider
実装によってキャプチャーされるスレッドコンテキストの型の人間が判読できる識別子を返します。
メソッドの詳細
currentContext
ThreadContextSnapshot currentContext(MapSE<StringSE,StringSE> props)
指定されたスレッドコンテキスト型のスナップショットを現在のスレッドからキャプチャーします。- パラメーター:
props
- 一部の型のタスクおよびコンテキストプロキシによってオプションで提供される実行プロパティ。実行プロパティを提供または使用しないスレッドコンテキストプロバイダーは、このパラメーターを無視できます。- 戻り値:
- 現在のスレッドからキャプチャーされた、提供された型のコンテキストの不変のスナップショット。
clearedContext
ThreadContextSnapshot clearedContext(MapSE<StringSE,StringSE> props)
指定された型の空の / クリアされたコンテキストを返します。このコンテキストは、現在のスレッドからキャプチャーされたものではなく、特定のコンテキストがスレッドに適用されていない場合に、このコンテキスト型で得られる動作を表します。これは、提供された型のスレッドコンテキストをリクエストスレッドから伝播したり、実行スレッドから継承したりしてはならない場合に使用されます。たまたまそれを実行するスレッドのコンテキストを意図せずに継承しないようにします。
例: セキュリティコンテキストプロバイダの空の / クリアされたコンテキストは、スレッドに認証されたユーザーが存在しないことを保証します。トランザクションコンテキストプロバイダーの空の / クリアされたコンテキストにより、アクティブなトランザクションが中断されます。などなど。
- パラメーター:
props
- 一部の型のタスクおよびコンテキストプロキシによってオプションで提供される実行プロパティ。実行プロパティを提供または使用しないスレッドコンテキストプロバイダーは、このパラメーターを無視できます。- 戻り値:
- 指定された型の不変の空 / デフォルトコンテキスト。
getThreadContextType
StringSE getThreadContextType()
このThreadContextProvider
実装によってキャプチャーされるスレッドコンテキストの型の人間が判読できる識別子を返します。アプリケーションの移植性を確保するために、これは通常、スレッドコンテキスト型を定義するのと同じ仕様で定義されたキーワードになります。
ContextServiceDefinition
は、Application
、Security
、Transaction
を含む組み込みスレッドコンテキスト型の識別子と、残りのすべてのコンテキストをカバーするRemaining
識別子を定義します。これらの識別子は、このメソッドから返されてはなりません。アプリケーションは、特定の型のスレッドコンテキストのみをキャプチャーして伝達するように
ContextServiceDefinition
を構成するときに、組み込みの識別子と、他の仕様およびサードパーティのコンテキスト型によって定義された識別子の組み合わせを使用します。例:
@ContextServiceDefinition(
name = "java:module/concurrent/MyCustomContext", propagated = MyCustomContextProvider.CONTEXT_NAME, cleared = { ContextServiceDefinition.SECURITY, ContextServiceDefinition.TRANSACTION }, unchanged = ContextServiceDefinition.ALL_REMAINING)同じ型の複数のスレッドコンテキストプロバイダーを同時に使用できるのはエラーです。
- 戻り値:
- 指定された型のスレッドコンテキストの識別子。