2012-06-02 3 views
3

EJB3 Singleton Session Bean을 사용하는 경우 ConcurrentHashMap 상태 변수를 올바르게 지정해야 할 필요가 없습니다. Container Concurrency Manager에 의해 관리되는 정규 HashMap을 사용할 수 있습니까?EJB3 단일 세션 Bean 및 ConcurrentHashMap

답변

3

맞습니다. 아무것도 지정하지 않으면 기본적으로 싱글 톤 세션 빈은 컨테이너 관리 동시성을 사용합니다. 또한 지정하지 않으면 모든 비즈니스 및 시간 초과 메소드에는 기본적으로 LockType.WRITE가 있습니다. 결과는 싱글 톤에서 동시에 여러 메소드를 실행하는 스레드가 없기 때문에 결과적으로 일반 java.util.HashMap을 사용하면 완벽하게 문제가되지 않습니다.

3

모든 메소드의 기본값은 @ConcurrencyManagement(CONTAINER)이고 @Lock(WRITE)이며 모든 메소드 호출이 쓰기 잠금 대기를 차단하므로 ConcurrentHashMap으로 확장되지 않습니다. @Lock(READ)ConcurrentHashMap을 사용하여 여러 스레드를 허용 할 수 있지만 그 시점에서는 @ConcurrencyManagement(BEAN)을 사용하여 컨테이너 관리 동시성을 완전히 제거 할 수 있습니다.

+0

늦게 답장을 드려 죄송합니다. 도움을 주셔서 감사합니다. 매우 유용했습니다. –

+0

@ JasonH 답변으로 문제가 해결되면 답변을 수락해야합니다 (답의 왼쪽에있는 체크 표시를 클릭하십시오). –

관련 문제