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으로 나눌 수 있음