アノテーションインターフェース ManagedScheduledExecutorDefinition


@RepeatableSE(List.class) @RetentionSE(RUNTIMESE) @TargetSE(TYPESE) public @interface ManagedScheduledExecutorDefinition

qualifiers() によって指定され、name() 属性で指定された JNDI 名でコンテナーによって JNDI に登録された必要な Qualifier アノテーションを含む、ManagedScheduledExecutorService インジェクションポイントに注入される ManagedScheduledExecutorService を定義します。

アプリケーションコンポーネントは、Resource アノテーションの lookup 属性でこの JNDI 名を参照できます。

 @ManagedScheduledExecutorDefinition(
     name = "java:comp/concurrent/MyScheduledExecutor",
     qualifiers = MyQualifier.class,
     context = "java:comp/concurrent/MyScheduledExecutorContext",
     hungTaskThreshold = 30000,
     maxAsync = 3)
 @ContextServiceDefinition(
     name = "java:comp/concurrent/MyScheduledExecutorContext",
     propagated = APPLICATION)
 public class MyServlet extends HttpServlet {
     @Inject
     @MyQualifier
     ManagedScheduledExecutorService myScheduledExecutor1;

     @Resource(lookup = "java:comp/concurrent/MyScheduledExecutor",
               name = "java:comp/concurrent/env/MyScheduledExecutorRef")
     ManagedScheduledExecutorService myScheduledExecutor2;
     ...

 @Qualifier
 @Retention(RetentionPolicy.RUNTIME)
 @Target({ ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE })
 public @interface MyQualifier {}
 

デプロイ記述子のリソース環境参照は、同様に lookup-name を指定できます。

 <resource-env-ref>
    <resource-env-ref-name>java:comp/env/concurrent/MyScheduledExecutorRef</resource-env-ref-name>
    <resource-env-ref-type>jakarta.enterprise.concurrent.ManagedScheduledExecutorService</resource-env-ref-type>
    <lookup-name>java:comp/concurrent/MyScheduledExecutor</lookup-name>
 </resource-env-ref>
 
<managed-scheduled-executor> デプロイ記述子要素を使用して ManagedScheduledExecutorService を定義することもできます。元:
 <managed-scheduled-executor>
    <name>java:module/concurrent/MyExecutor</name>
    <context-service-ref>java:module/concurrent/MyExecutorContext</context-service-ref>
    <hung-task-threshold>120000</hung-task-threshold>
    <max-async>5</max-async>
 </managed-scheduled-executor>
 
managed-scheduled-executor と ManagedScheduledExecutorDefinition の名前が同じ場合、それらの属性は結合されて単一の ManagedScheduledExecutorService 定義が定義され、managed-scheduled-executor デプロイ記述子エントリで指定された各属性が、アノテーションの対応する属性よりも優先されます。修飾子要素が指定されている場合、修飾子要素のセットがアノテーションの修飾子属性に置き換えられます。
導入:
3.0
  • ネストされたクラスの概要

    ネストされたクラス
    修飾子と型
    クラス
    説明
    static @interface
    同じ型で複数の ManagedScheduledExecutorDefinition アノテーションを有効にします。
  • 必須定数のサマリー

    必須要素
    修飾子と型
    必須要素
    説明
    ManagedScheduledExecutorService インスタンスの JNDI 名。
  • オプション要素の概要

    オプション要素
    修飾子と型
    オプションの要素
    説明
    このエグゼキューターで実行されるタスクとアクションにコンテキストを適用する方法を決定する ContextService インスタンスの名前。
    long
    タスクまたはアクションがハングしていると見なされるまでに実行できるミリ秒単位の時間。
    int
    このエグゼキュータが非同期で同時に実行するコンテキストタスクとアクションの上限。
    ClassSE<?>[]
    必要な qualifier annotations のリスト。
    boolean
    インラインで実行されないタスクに対して仮想 threadsSE を作成するようにこのエグゼキュータにリクエストされているかどうかを示します。
  • 要素の詳細

    • name

      StringSE name
      ManagedScheduledExecutorService インスタンスの JNDI 名。JNDI 名は、次のような有効な Jakarta EE 名前空間にある必要があります。
      • java: コンプ
      • java: モジュール
      • java: アプリ
      • java: グローバル
      戻り値:
      ManagedScheduledExecutorService JNDI 名。
    • qualifiers

      ClassSE<?>[] qualifiers

      必要な qualifier annotations のリスト。

      これらの修飾子アノテーションを持つ ManagedScheduledExecutorService インジェクションポイントは、この ManagedScheduledExecutorDefinition によって生成される Bean を注入します。

      デフォルト値は空のリストで、この ManagedScheduledExecutorDefinition がインジェクションポイントに対して Bean インスタンスを自動的に生成しないことを示します。

      修飾子リストが空でない場合、コンテナーは ManagedScheduledExecutorService インスタンスを作成し、指定された必須修飾子と必須型の ManagedScheduledExecutorService を使用して、そのインスタンスの ApplicationScoped Bean を登録します。Bean のライフサイクルはアプリケーションのライフサイクルと一致し、Bean はアプリケーションの外部からアクセスできません。空でない修飾子リストも構成する場合、アプリケーションは java:global name を構成してはなりません。

      アプリケーションは、プロデューサーの修飾子のアノテーションが ManagedScheduledExecutorDefinition の空でない qualifiers() リストと競合しない限り、ManagedScheduledExecutorService インジェクションポイントに対して独自の Producers を定義できます。

      戻り値:
      修飾子のリスト。
      導入:
      3.1
      デフォルト:
      {}
    • context

      StringSE context
      このエグゼキューターで実行されるタスクとアクションにコンテキストを適用する方法を決定する ContextService インスタンスの名前。

      この名前は、ContextServiceDefinition の名前、context-service デプロイ記述子要素の名前、または Jakarta EE のデフォルト ContextService インスタンス java:comp/DefaultContextService の JNDI 名にすることができます。

      ContextService の名前は、この ManagedScheduledExecutorDefinition の名前よりも詳細であってはなりません。例: この ManagedScheduledExecutorDefinition の名前が java:app にある場合、ContextService は java:app または java:global にある可能性がありますが、どのモジュールの ContextService 定義を使用する必要があるかが曖昧になる java:module にはありません。

      デフォルト値 java:comp/DefaultContextService は、Jakarta EE デフォルト ContextService の JNDI 名です。

      戻り値:
      コンテキストをキャプチャーして伝播またはクリアするための ContextService の名前。
      デフォルト:
      "java:comp/DefaultContextService"
    • hungTaskThreshold

      long hungTaskThreshold

      タスクまたはアクションがハングしていると見なされるまでに実行できるミリ秒単位の時間。

      -1 のデフォルト値は無制限を示します。

      戻り値:
      タスクまたはアクションがハングしたと見なされるまでのミリ秒数。
      デフォルト:
      -1L
    • maxAsync

      int maxAsync

      このエグゼキュータが非同期で同時に実行するコンテキストタスクとアクションの上限。この制約は、スレッドが CompletableFuture.join() をリクエストし、アクションがまだ開始されていない場合にインラインで実行される場合など、エグゼキューターがインラインで実行されるタスクとアクションには適用されません。この制約は、schedule* メソッドまたは Asynchronous.runAt() を介してスケジュールされたタスクにも適用されません。

      -1 のデフォルト値は無制限を示しますが、システムのリソース制約の影響を受けます。

      戻り値:
      非同期実行の上限。
      デフォルト:
      -1
    • virtual

      boolean virtual

      このエグゼキュータが、インラインで実行されないタスクの仮想 threadsSE を作成するようにリクエストされているかどうかを示します。仮想スレッドについては、ThreadSE JavaDoc の 「仮想スレッド」というタイトルのセクションで説明されています。

      true の場合、実行プログラムは、仮想スレッドを作成できる機能があり、仮想スレッドの使用を制限するベンダー固有の構成によってリクエストがオーバーライドされない場合、仮想スレッドを作成できます。

      デフォルトは false で、エグゼキューターが仮想スレッドを作成してはならないことを示します。

      完了ステージのアクションなどの一部のタスクは、別のステージの完了や完了ステージでの結合操作などのイベントにレスポンスして、既存のスレッドでインラインで実行できることに注意してください。このような状況では、エグゼキューターはタスクの実行に使用されるスレッドの種類を制御しません。

      Java SE 17 で実行する場合、true 値は false 値と同じように動作し、仮想スレッドではなくプラットフォームスレッドが作成されます。

      戻り値:
      エグゼキューターが仮想スレッドを作成できる場合は true、それ以外の場合は false
      導入:
      3.1
      デフォルト:
      false