EJBBean
을 클라이언트에서 호출하려면 먼저 JNDI 조회를 통해 EJBHome
객체 참조를 확보해야합니다. 이 코드는 EJBBean
으로 작업해야 할 때마다 실행해야하므로 중복되거나 비용이 많이 듭니다.EJBHomeFactory 패턴을 구현할 때 동기화 된 맵이 필요합니까?
이 문제를 해결하려면 JNDI 조회를 반복하지 않고 EJBHome
개체 참조를 캐시하고 캐시에서 반복적으로 다시 사용할 수 있습니다.
이것은 EJBHomeFactory Pattern
(또는보다 일반적인 서비스 검색 도구 패턴)입니다.
내가 본 대부분의 구현에서는 동기화 된 Map
을 캐시로 사용하거나 Hashtable
을 사용합니다. 응용 프로그램이 서버에 배포되었을 때 캐시가 생성되고 나중에 캐시를 수정하지 않으면 (get() 메서드 만 수행됨) 실제로 Map
또는 HashMap
동기화가 필요합니까?
내가 알고있는 HashMap
적어도 하나의 스레드가지도를 수정하면 안전하지 않습니다 (이 경우에도 here에 게시 됨).이 경우 스레드는 읽기만 수행합니다.
따라서 EJBHomeFactory Pattern
에서 HashMap
을 사용해도 안전합니까?