JNDI - 1

2005/08/17 16:35
Overview
도서관에서 책을 찾을 때,, 그냥 책장으로 가서 책장들 쭉 살피면서 책을 찾는다는 건,,,
다리도 아플뿐 더러 시간도 많이 걸린다.
그럴때.....도서관 입구에 있는 카드 카탈로그를 살펴보면,
책 이름과 그 책이 있는 곳의 위치가 담겨있어서,
별로 시간낭비하지 않고 바로 그곳에가서 책을 찾아보면 된다.
요즘은 이 정보가 컴터에 담겨 있어서 컴터로 검색 후에 찾아보면 되구..

암튼...이렇게 책과 그 위치를 매핑해놓는 것처럼,
이름과 object를 매핑해주는 자바기술을
JNDI (Java Naming and Directory Interface)라고 한다.

Other Naming Services

Name과 Object을 연결(binding)해주는 다른 naming service들에는 다음과 같은 것들이 있다.

COS (Common Object Service) Naming : CORBA를 위한 서비스
DNS (Domain Name System) : 인터넷 Name service like www.lovelystory.com
LDAP (Lightweight Directory Access Protocol) : 가벼운 버전의 DAP
NIS (Network Information System) and NIS+ : Sun이 개발한 네트웍 네이밍 서비스

위의 시스템들의 공통점은 name과 object를 바인딩한다는 거고,
틀린 점은 naming convention이 각각 다른다는 거다.

예를 들어 DNS의 www.lovelystory.com은 com이란 최상위 도메인이 있고, 그밑에 lovelystory 도메인이 있고, www라는 machine이 있다는 의미이다.

LDAP의 경우 콤마로 각각의 컴포넌트가 나눠지고 이름/값 형태의 쌍으로 구성되어 있다. 예를 들어 "cn=Todd Sundsted, o=ComFrame, cs=US"라면 US라는 국가에 ComFrame이라는 조직이 있고, 개인의 이름은 Todd Sundsted라는 의미이다.

그래서...JNDI naming은?

JNDI는 구현(Implementation)이 아니라 인터페이스(Interface)다.
따라서 원래 존재하는 서비스를 액세스할 수 있어야 하고, 그 시스템이 어떻게 작동하는지 알아야 JNDI를 적용할 수 있다. 이건,,,단점이라고 볼 수 있는데....이게 다시 장점이 되는데,,,
무슨 말이냐면, 이미 존재하는 어떤 Naming service에도 JNDI를 융합(integration)할 수 있다는 거지.

What about Context and InitialContext?

Context interface는 JNDI에서 중심역할을 하는데, naming service랑 연결된 바인딩을 표현하고, name과 object를 연결해주고, 연결을 풀어주고, object를 rename하고, 바인딩 리스트를 볼 수 있게해준다. Context의 메쏘드에는...

void bind(String stringName, Object object)
void rebind(String stringName, Object object)
Object lookup(String stringName)
void unbind(String stringNAme)
void rename(String stringOldName, String stringNewName)
NamingEnumeration listBindings(String stringName)
NamingEnumeration list(String stringName)

이 있다. 메쏘드 이름만봐도 대충 뭐하는 애들인지 짐작이 가니,
자세한 설명은 피하고....참, 위의 메쏘드들은 String object대신에 Name object를 받는 똑같은 메쏘드들이 또 있는데...Name object를 사용함으로써 특정네임서비스에 대해 알필요가 없어진다.

JNDI의 InitialContext라는 클래스는 어디서부터 찾기 시작해야될 지를 도와준다.



Reference: www.javaworld.com

Trackback

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다

Comments

Write your comment

댓글 입력 폼
[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다