アノテーション型 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
    • オプション要素のサマリー

      オプション要素  
      修飾子と型 オプションの要素 説明
      StringSEcontext
      このエグゼキューターで実行されるタスクとアクションにコンテキストを適用する方法を決定する ContextService インスタンスの名前。
      longhungTaskThreshold
      タスクまたはアクションがハングしていると見なされるまでに実行できるミリ秒単位の時間。
      intmaxAsync
      このエグゼキュータが非同期で同時に実行するコンテキストタスクとアクションの上限。
    • 要素の詳細

      • 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"
      • hungTaskThreshold

        long hungTaskThreshold

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

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

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

        int maxAsync

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

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

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