JNDI 구성 요소
- Naming Service
- 시스템 자원이나 객체에게 이름을 붙이고 그 이름을 사용하여 자원이나 객체를 사용할 수 있도록 해 주는 서비스
- 이름을 사용해서 객체나 객체에 대한 Reference를 발견할 수 있는 방법을 제공
- 어플리케이션 개발자는 Naming Service에 이름을 사용하여 객체를 binding 함으로써 객체에 이름을 부여
Binding
- 이름을 객체(자원)와 mapping 시키는 기능
(ex1 : www.naver.com =(DNS) = 211.163.21.34)
(ex2 : /etc/passwd =(filesystem) = file contents)
- binding은 naming service를 설정하는 사람이 생성
- Context
- 객체에 대한 이름의 binding 집합
- Naming 규칙과 Search 기능을 가짐.
- 객체에 대한 binding과 unbinding할 수 있는 방법과 객체의 내용을 목록으로 보여주는 방법을 제공 - Namespace
- 이름과 객체를 연결하는 목록의 집합
- Directory
- binding 된 객체들에 대한 데이터를 제공하는 Naming Service
- 이름만을 사용하면 다른 시스템에서 그 객체가 다른 이름으로 설정되어 있을 경우 그 객체를 찾을 수 없는 naming의 기능을 보완한 것
- 객체와 속성을 저장하는 데이터베이스와 같은 역할
- 특정 자원에 이름은 물론 그 자원의 속성까지 연관시킬 수 있도록 함
- 검색 필터를 이용하여 원하는 속성을 지닌 객체를 찾는데 효율적
Exam1. JEUS - DataSource 설정과 생성
기동 시 JEUS Manager가 DataSource 설정을 읽어 들여 JNDI에 DataSource를 등록(BIND)
DataSource를 lookup()하는 JVM에 Pool이 생성되고 DB와의 Connection을 맺어서 Pool에 집어넣음
최초 lookup 시에 한번만 Pool 초기화/생성이 이루어짐
Exam2. Commonly used feature of JNDI
prt = (Printer) building7.lookup("puffin"); prt.print(document); String[] attrs = {"workPhone", "cellPhone", "faxNumber"}; bobsPhones = directory.getAttributes("cn=Bob, o=Widget, c=US", attrs); bob = directory.search("o=Widget, c=US", "(cn=Bob)", searchctls);
Exam3. Global Binding & Local Binding
Web Module이나EJB Module 에서 Naming Context에 있는 environment를 참조하고자 하는 경우를 크게 Global binding과 Local binding으로 나눌 수 있음