9장. 자카르타 동시성

Jakarta Concurrency는 자카르타 EE 애플리케이션 환경 사양에 Java SE 동시성 유틸리티를 수용하는 API입니다. 자카르타 동시성 사양에 정의되어 있습니다. JBoss EAP를 사용하면 자카르타 동시성 인스턴스를 생성, 편집 및 삭제할 수 있으므로 이러한 인스턴스를 애플리케이션에서 사용할 수 있습니다.

Jakarta Concurrency는 기존 컨텍스트의 애플리케이션 스레드를 가져와 자체 스레드에서 이를 사용하여 호출 컨텍스트를 확장하는 데 도움이 됩니다. 호출 컨텍스트 확장에는 기본적으로 클래스 로드, JNDI 및 보안 컨텍스트가 포함됩니다.

자카르타 동시성 유형은 다음과 같습니다.

  • 컨텍스트 서비스
  • 관리 스레드 팩토리
  • 관리형 실행자 서비스
  • 관리된 예약 실행자 서비스

예제: standalone.xml의 자카르타 동시성

<subsystem xmlns="urn:jboss:domain:ee:4.0">
            <spec-descriptor-property-replacement>false</spec-descriptor-property-replacement>
            <concurrent>
                <context-services>
                    <context-service name="default" jndi-name="java:jboss/ee/concurrency/context/default" use-transaction-setup-provider="true"/>
                </context-services>
                <managed-thread-factories>
                    <managed-thread-factory name="default" jndi-name="java:jboss/ee/concurrency/factory/default" context-service="default"/>
                </managed-thread-factories>
                <managed-executor-services>
                    <managed-executor-service name="default" jndi-name="java:jboss/ee/concurrency/executor/default" context-service="default" hung-task-threshold="60000" keepalive-time="5000"/>
                </managed-executor-services>
                <managed-scheduled-executor-services>
                    <managed-scheduled-executor-service name="default" jndi-name="java:jboss/ee/concurrency/scheduler/default" context-service="default" hung-task-threshold="60000" keepalive-time="3000"/>
                </managed-scheduled-executor-services>
            </concurrent>
            <default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/datasources/ExampleDS" managed-executor-service="java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>
</subsystem>

9.1. 컨텍스트 서비스

컨텍스트 서비스(javax.enterprise.concurrent.ContextService)를 사용하면 기존 오브젝트에서 컨텍스트 프록시를 빌드할 수 있습니다. 컨텍스트 프록시는 호출을 원래 오브젝트로 전송하기 전에 컨텍스트를 생성하거나 호출할 때 다른 Jakarta Concurrency 유틸리티에서 사용하는 호출 컨텍스트를 준비합니다.

컨텍스트 서비스 동시성 유틸리티의 특성은 다음과 같습니다.

  • name: 모든 컨텍스트 서비스 내의 고유 이름입니다.
  • jndi-name: 컨텍스트 서비스를 JNDI에 배치해야 하는 위치를 정의합니다.
  • use-transaction-setup-provider: 선택 사항: 프록시 오브젝트를 호출할 때 컨텍스트 서비스에서 빌드한 컨텍스트 프록시가 컨텍스트에서 트랜잭션을 일시 중단해야 하는지를 나타냅니다. 기본값은 false 이지만 기본 컨텍스트 서비스의 값은 true 입니다.

컨텍스트 서비스 동시성 유틸리티를 사용하는 예는 위의 예를 참조하십시오.

예제: 새 컨텍스트 서비스 추가

/subsystem=ee/context-service=newContextService:add(jndi-name=java:jboss/ee/concurrency/contextservice/newContextService)

예제: 컨텍스트 서비스 변경

/subsystem=ee/context-service=newContextService:write-attribute(name=jndi-name, value=java:jboss/ee/concurrency/contextservice/changedContextService)

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

예제: 컨텍스트 서비스 제거

/subsystem=ee/context-service=newContextService:remove()

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