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()
이 작업을 수행하려면 다시 로드해야 합니다.