9.4. マネージドスケジュール済みエグゼキューターサービス
マネージドスケジュール済みエグゼキューターサービス (javax.enterprise.concurrent.ManagedScheduledExecutorService)
を使用すると、Jakarta EE アプリケーションで非同期実行向けタスクをスケジュールできます。JBoss EAP はマネージドスケジュール済みエグゼキューターサービスインスタンスを処理するため、Jakarta 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()
この操作にはリロードが必要です。