アノテーションインターフェース 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アノテーションを有効にします。必須定数のサマリー
必須要素オプション要素の概要
オプション要素修飾子と型オプションの要素説明このエグゼキューターで実行されるタスクとアクションにコンテキストを適用する方法を決定するContextServiceインスタンスの名前。longタスクまたはアクションがハングしていると見なされるまでに実行できるミリ秒単位の時間。intこのエグゼキュータが非同期で同時に実行するコンテキストタスクとアクションの上限。ClassSE<?>[]必要なqualifier annotationsのリスト。booleanインラインで実行されないタスクに対して仮想threadsSE を作成するようにこのエグゼキュータにリクエストされているかどうかを示します。
要素の詳細
name
StringSE nameManagedScheduledExecutorServiceインスタンスの JNDI 名。JNDI 名は、次のような有効な Jakarta EE 名前空間にある必要があります。- java: コンプ
- java: モジュール
- java: アプリ
- java: グローバル
- 戻り値:
ManagedScheduledExecutorServiceJNDI 名。
qualifiers
ClassSE<?>[] qualifiers必要な
qualifier annotationsのリスト。これらの修飾子アノテーションを持つ
ManagedScheduledExecutorServiceインジェクションポイントは、このManagedScheduledExecutorDefinitionによって生成される Bean を注入します。デフォルト値は空のリストで、この
ManagedScheduledExecutorDefinitionがインジェクションポイントに対して Bean インスタンスを自動的に生成しないことを示します。修飾子リストが空でない場合、コンテナーは
ManagedScheduledExecutorServiceインスタンスを作成し、指定された必須修飾子と必須型のManagedScheduledExecutorServiceを使用して、そのインスタンスのApplicationScopedBean を登録します。Bean のライフサイクルはアプリケーションのライフサイクルと一致し、Bean はアプリケーションの外部からアクセスできません。空でない修飾子リストも構成する場合、アプリケーションはjava:globalnameを構成してはなりません。アプリケーションは、プロデューサーの修飾子のアノテーションが
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