9.3. 관리형 실행자 서비스

관리형 실행기 서비스 (javax.enterprise.concurrent.ManagedExecutorService) 를 통해 자카르타 EE 애플리케이션이 비동기 실행을 위한 작업을 제출할 수 있습니다. JBoss EAP는 관리되는 실행자 서비스 인스턴스를 처리하므로 Jakarta EE 애플리케이션은 라이프사이클 관련 메서드를 호출할 수 없습니다.

관리형 실행자 서비스 동시성 유틸리티의 속성은 다음과 같습니다.

  • context-service: 선택 사항: 기존 컨텍스트 서비스를 이름으로 참조합니다. 지정된 경우 작업을 실행자에 제출할 때 참조된 컨텍스트 서비스가 표시되는 호출 컨텍스트를 캡처합니다. 이 컨텍스트는 작업을 실행할 때 사용됩니다.
  • jndi-name: 관리 스레드 팩토리를 JNDI에 배치할 위치를 정의합니다.
  • max-threads: 실행자가 사용하는 최대 스레드 수를 정의합니다. 정의되지 않은 경우 코어 스레드 의 값이 사용됩니다.
  • thread-factory: 기존 관리 스레드 팩토리를 이름으로 참조하여 내부 스레드 생성을 처리합니다. 지정하지 않으면 기본 구성이 포함된 관리형 스레드 팩토리가 생성되고 내부적으로 사용됩니다.
  • 코어 스레드: 실행자가 사용할 최소 스레드 수를 정의합니다. 이 속성이 정의되지 않은 경우 기본값은 프로세서 수에 따라 계산됩니다. 값이 0 인 것은 권장되지 않습니다. 대기열 전략을 결정하는 데 이 값을 사용하는 방법에 대한 자세한 내용은 queue-length 특성을 참조하십시오.
  • keepalive-time: 내부 스레드가 유휴 상태일 수 있는 시간을 밀리초 단위로 정의합니다. 속성 기본값은 60000 입니다.
  • queue-length: 실행자의 작업 대기열 용량을 나타냅니다. 값 0 은 직접 이관을 의미하며 가능한 거부가 발생합니다. 이 속성이 정의되지 않았거나 Integer.MAX_VALUE 로 설정된 경우 바인딩되지 않은 큐를 사용해야 함을 나타냅니다. 다른 모든 값은 정확한 큐 크기를 지정합니다. 바인딩되지 않은 큐 또는 직접 핸드오프가 사용되는 경우 0 보다 큰 코어 스레드 값이 필요합니다.
  • hung-task-threshold: 관리 실행자 서비스에 의해 중단된 것으로 간주되는 시간(밀리초)을 정의하고 강제로 중단된 시간을 정의합니다. 값이 기본값인 0 이면 작업이 중단되지 않습니다.
  • long-running-tasks: 장기 실행 작업의 실행을 최적화하고 기본값은 false 입니다.
  • reject-policy: 실행자가 작업을 거부할 때 사용할 정책을 정의합니다. 속성 값은 기본 ABORT 일 수 있습니다. 즉 예외를 throw해야 합니다. 즉, RETRY_ABORT 는 예외를 발생하기 전에 한 번 더 제출하려고 합니다.

예제: 새 관리 실행자 서비스 추가

/subsystem=ee/managed-executor-service=newManagedExecutorService:add(jndi-name=java:jboss/ee/concurrency/executor/newManagedExecutorService, core-threads=7, thread-factory=default)

예제: Managed Executor 서비스 변경

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

이 작업을 수행하려면 다시 로드해야 합니다. 마찬가지로 다른 속성도 변경할 수 있습니다.

예제: Managed Executor 서비스 제거

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

이 작업을 수행하려면 다시 로드해야 합니다.