アノテーション型 ManagedExecutorDefinition
@RepeatableSE(List.class) @RetentionSE(RUNTIMESE) @TargetSE(TYPESE) public @interface ManagedExecutorDefinition
name()
属性で指定された JNDI 名でコンテナーによって JNDI に登録されるManagedExecutorService
を定義します。アプリケーションコンポーネントは、
Resource
アノテーションのlookup
属性でこの JNDI 名を参照できます。@ManagedExecutorDefinition( name = "java:module/concurrent/MyExecutor", context = "java:module/concurrent/MyExecutorContext", hungTaskThreshold = 120000, maxAsync = 5) @ContextServiceDefinition( name = "java:module/concurrent/MyExecutorContext", propagated = { SECURITY, APPLICATION }) public class MyServlet extends HttpServlet { @Resource(lookup = "java:module/concurrent/MyExecutor", name = "java:module/concurrent/env/MyExecutorRef") ManagedExecutorService myExecutor;
デプロイ記述子のリソース環境参照は、同様に
lookup-name
を指定できます。<resource-env-ref> <resource-env-ref-name>java:module/env/concurrent/MyExecutorRef</resource-env-ref-name> <resource-env-ref-type>jakarta.enterprise.concurrent.ManagedExecutorService</resource-env-ref-type> <lookup-name>java:module/concurrent/MyExecutor</lookup-name> </resource-env-ref>
<managed-executor>
デプロイ記述子要素を使用してManagedExecutorService
を定義することもできます。元:<managed-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-executor>
managed-executor
とManagedExecutorDefinition
が同じ名前の場合、それらの属性がマージされて単一のManagedExecutorService
定義が定義され、managed-executor
デプロイ記述子エントリで指定された各属性が、対応するアノテーションの属性よりも優先されます。- 導入:
- 3.0
必須定数のサマリー
必須要素 修飾子と型 必須要素 説明 StringSE
name
ManagedExecutorService
インスタンスの JNDI 名。
オプション要素のサマリー
オプション要素 修飾子と型 オプションの要素 説明 StringSE
context
このエグゼキューターで実行されるタスクとアクションにコンテキストを適用する方法を決定するContextService
インスタンスの名前。long
hungTaskThreshold
タスクまたはアクションがハングしていると見なされるまでに実行できるミリ秒単位の時間。int
maxAsync
このエグゼキュータが非同期で同時に実行するコンテキストタスクとアクションの上限。
要素の詳細
name
StringSE name
ManagedExecutorService
インスタンスの JNDI 名。JNDI 名は、次のような有効な Jakarta EE 名前空間にある必要があります。- java: コンプ
- java: モジュール
- java: アプリ
- java: グローバル
- 戻り値:
ManagedExecutorService
JNDI 名。
context
StringSE context
このエグゼキューターで実行されるタスクとアクションにコンテキストを適用する方法を決定するContextService
インスタンスの名前。この名前は、
ContextServiceDefinition
の名前、context-service
デプロイ記述子要素の名前、または Jakarta EE のデフォルトContextService
インスタンスjava:comp/DefaultContextService
の JNDI 名にすることができます。ContextService
の名前は、このManagedExecutorDefinition
の名前よりも詳細であってはなりません。例: このManagedExecutorDefinition
の名前がjava:app
にある場合、ContextService
はjava:app
またはjava:global
にある可能性がありますが、どのモジュールのContextService
定義を使用する必要があるかが曖昧になるjava:module
にはありません。デフォルト値
java:comp/DefaultContextService
は、Jakarta EE デフォルトContextService
の JNDI 名です。- 戻り値:
- コンテキストをキャプチャーして伝播またはクリアするための
ContextService
の名前。
- デフォルト:
- "java:comp/DefaultContextService"
maxAsync
int maxAsync
このエグゼキュータが非同期で同時に実行するコンテキストタスクとアクションの上限。この制約は、スレッドが
CompletableFuture.join()
をリクエストし、アクションがまだ開始されていない場合にインラインで実行される場合など、executor がインラインで実行するタスクおよびアクションには適用されません。-1
のデフォルト値は無制限を示しますが、システムのリソース制約の影響を受けます。- 戻り値:
- 非同期実行の上限。
- デフォルト:
- -1