インターフェース ThreadContextProvider


  • public interface ThreadContextProvider
    スレッドコンテキストのサードパーティプロバイダーは、このインターフェースを実装して、スレッドコンテキストのキャプチャーと伝達に参加します。

    アプリケーションコードは、この spi パッケージ内のクラスに決してアクセスしてはなりません。代わりに、アプリケーションコードは、Jakarta Concurrency 仕様で定義されているさまざまなインターフェース ( ManagedExecutorServiceContextService など) を使用します。

    ThreadContextProvider の実装と関連するクラスは、サードパーティプロバイダーの JAR ファイル内にパッケージ化されています。実装は、ServiceLoaderSE メカニズムを介して検出可能になります。パッケージ化する JAR ファイルには、次の名前と場所のファイルが含まれている必要があります。

    META-INF/services/jakarta.enterprise.concurrent.spi.ThreadContextProvider

    前述のファイルの内容は、JAR ファイル内で提供される ThreadContextProvider 実装の完全修飾名をそれぞれ指定する 1 つ以上の行である必要があります。

    Jakarta EE Product Provider は、ServiceLoader を使用して、スレッドコンテキストのキャプチャーと伝播に参加できる ThreadContextProvider の利用可能なすべての実装を識別し、呼び出して現在のスレッドコンテキストをキャプチャーするか、ContextServiceDefinition の構成またはベンダー固有の構成ごとにデフォルトのスレッドコンテキストを確立する必要があります。また、コンテキスト伝搬構成をオーバーライドする ManagedTask.TRANSACTION などの実行プロパティ。

    導入:
    3.0
    • メソッドの詳細

      • currentContext

        ThreadContextSnapshot currentContext​(MapSE<StringSE,​StringSE> props)
        指定されたスレッドコンテキスト型のスナップショットを現在のスレッドからキャプチャーします。
        パラメーター:
        props - 一部の型のタスクおよびコンテキストプロキシによってオプションで提供される実行プロパティ。実行プロパティを提供または使用しないスレッドコンテキストプロバイダーは、このパラメーターを無視できます。
        戻り値:
        現在のスレッドからキャプチャーされた、提供された型のコンテキストの不変のスナップショット。
      • clearedContext

        ThreadContextSnapshot clearedContext​(MapSE<StringSE,​StringSE> props)
        指定された型の空の / クリアされたコンテキストを返します。このコンテキストは、現在のスレッドからキャプチャーされたものではなく、特定のコンテキストがスレッドに適用されていない場合に、このコンテキスト型で得られる動作を表します。

        これは、提供された型のスレッドコンテキストをリクエストスレッドから伝播したり、実行スレッドから継承したりしてはならない場合に使用されます。たまたまそれを実行するスレッドのコンテキストを意図せずに継承しないようにします。

        例: セキュリティコンテキストプロバイダの空の / クリアされたコンテキストは、スレッドに認証されたユーザーが存在しないことを保証します。トランザクションコンテキストプロバイダーの空の / クリアされたコンテキストにより、アクティブなトランザクションが中断されます。などなど。

        パラメーター:
        props - 一部の型のタスクおよびコンテキストプロキシによってオプションで提供される実行プロパティ。実行プロパティを提供または使用しないスレッドコンテキストプロバイダーは、このパラメーターを無視できます。
        戻り値:
        指定された型の不変の空 / デフォルトコンテキスト。
      • getThreadContextType

        StringSE getThreadContextType()
        この ThreadContextProvider 実装によってキャプチャーされるスレッドコンテキストの型の人間が判読できる識別子を返します。

        アプリケーションの移植性を確保するために、これは通常、スレッドコンテキスト型を定義するのと同じ仕様で定義されたキーワードになります。

        ContextServiceDefinition は、ApplicationSecurityTransaction を含む組み込みスレッドコンテキスト型の識別子と、残りのすべてのコンテキストをカバーする Remaining 識別子を定義します。これらの識別子は、このメソッドから返されてはなりません。

        アプリケーションは、特定の型のスレッドコンテキストのみをキャプチャーして伝達するように ContextServiceDefinition を構成するときに、組み込みの識別子と、他の仕様およびサードパーティのコンテキスト型によって定義された識別子の組み合わせを使用します。

        例:

         @ContextServiceDefinition(
            name = "java:module/concurrent/MyCustomContext",
            propagated = MyCustomContextProvider.CONTEXT_NAME,
            cleared = { ContextServiceDefinition.SECURITY, ContextServiceDefinition.TRANSACTION },
            unchanged = ContextServiceDefinition.ALL_REMAINING)
         

        同じ型の複数のスレッドコンテキストプロバイダーを同時に使用できるのはエラーです。

        戻り値:
        指定された型のスレッドコンテキストの識別子。