9.4. 管理対象スケジュール済みエグゼキューターサービス

管理対象スケジュール済みエグゼキューターサービス (javax.enterprise.concurrent.ManagedScheduledExecutorService) を使用すると、Java EE アプリケーションで非同期実行向けタスクをスケジュールできます。JBoss EAP は管理対象スケジュール済みエグゼキューターサービスインスタンスを処理するため、Java EE アプリケーションはライフサイクル関連メソッドを呼び出すことができません。

管理対象エグゼキューターサービスコンカレンシーユーティリティーの属性には以下のものがあります。

  • context-service: 既存のコンテキストサービスをその名前で参照します。指定された場合は、参照されたコンテキストサービスがタスクをエグゼキューターに送信したときに存在する呼び出しコンテキストを取得します (このコンテキストはタスクの実行時に使用されます)。
  • hung-task-threshold: ミリ秒単位の時間を定義します。この時間が経過すると、管理対象のスケジュール設定されたエグゼキューターサービスによってタスクがハング状態にあると見なされ、強制終了します。値が 0 (デフォルト値) の場合、タスクはハング状態にあると見なされません。
  • keepalive-time: 内部スレッドをアイドル状態にできる時間 (ミリ秒単位) を定義します。属性のデフォルト値は 60000 です。
  • reject-policy: タスクがエグゼキューターによって拒否されたときに使用するポリシーを定義します。属性値は、デフォルト値で、例外が発生する ABORT、または例外を発生する前にエグゼキューターがもう 1 度送信を試みる RETRY_ABORT のいずれかになります。
  • core-threads: スケジュール済みエグゼキューターによって使用されるスレッドの最小数を定義します。
  • jndi-name: JNDI で管理対象スケジュール済みエグゼキューターサービスを配置する場所を定義します。
  • long-running-tasks: 長時間実行中のタスクの実行の最適化を推奨します。 デフォルト値は false です。
  • thread-factory: 既存の管理対象スレッドファクトリーをその名前で参照して内部スレッドの作成を処理します。指定されない場合は、デフォルト設定の管理対象スレッドファクトリーが作成され、内部で使用されます。

例: 新しい管理対象スケジュール済みエグゼキューターサービスの追加

/subsystem=ee/managed-scheduled-executor-service=newManagedScheduledExecutorService:add(jndi-name=java:jboss/ee/concurrency/scheduledexecutor/newManagedScheduledExecutorService, core-threads=7, context-service=default)

この操作にはリロードが必要です。

例: 管理対象スケジュール済みエグゼキューターサービスの変更

/subsystem=ee/managed-scheduled-executor-service=newManagedScheduledExecutorService:write-attribute(name=core-threads, value=10)

この操作にはリロードが必要です。同様に、他の属性を変更することができます。

例: 管理対象スケジュール済みエグゼキューターサービスの削除

/subsystem=ee/managed-scheduled-executor-service=newManagedScheduledExecutorService:remove()

この操作にはリロードが必要です。