J2EE 규약은 다른 리소스나 서비스들에 대한 접근을 JNDI에 위임한다. J2EE 호환 서버는 이런한 리소스나 서비스들을 JNDI 서버에 바인드함으로써 클라이언트가 네트워크의 어디에도 JNDI lookup 프로세스를 통해 리소스나 서비스들을 lookup 할수 있도록 한다. 이러한 리소스나 서비스의 종류는 EJBHome, DateSource, JMS ConnectionFactory, JMS Topic/Queue 등이 있다. 이러한 요소들의 객체는 JNDI API를 사용하여 얻어진다. JNDI 룩업을 수행하여 어떻게 벤더에서 다른 벤터로 변경하는 것이 가능할까? JNDI 룩업 수행의 반복은 시스템의 부하를 줄수 있다.
JNDI로부터 서비스를 호출해야 할 때 매번 사용자가 적절한 JNDI 서버에 연결하고, JNDI 환경 정보를 알아내어 서비스를 찾는다. 필요한 것은 JNDI로부터 다양한 서비스를 생성 하고 가져올수 있다는 단일점이다. 여기에서 Service Locator 패턴이 사용된다.
Service Locator 패턴은 단순하게 사용할 수 있는 인터페이스로 모든 JNDI 룩업방식을 추상화 한다. 사용자가 특정한 EJB나 JDBC등… 연결을 요청할 때 데이터 소스에 연결하려고 처음 생성했던 JDBC 커넥션 객체를 재사용하고, EJBHome 인터페이스를 케싱함으로써 JNDI 룩업의 호출 횟수를 최소화한다.
댓글 없음:
댓글 쓰기