JAVA/지식

JNDI 란? 이름으로 쉽게 찾을 수 있는 기능

우엥우아앙 2021. 8. 1. 18:23
JNDI (Java Naming and Directory Interface) 란?

Java 소프트웨어 클라이언트가 이름을 이용하여 데이터 및 객체를 찾을 수 있도록 도와주는 디렉토리 서비스에 대한 Java API 이다.

 

사용예시

  1. 웹 브라우저에서 name/value 쌍으로 전송한 후 서블릿에서 getParameter(name)로 값을 가져올 때
  2. 해시맵(HashMap) 이나 해시테이블(HasthTable)에 키/값으로 저장한 후 키를 이용해 값을 가져올 때
  3. 웹 브라우저에서 도메인네임으로 DNS 서버에 요청할 경우 도메인 네임에 대한 IP 주소를 가져올 때

 

왜 사용하는가?

보통 JDBC (DBCP) 설정해서 개발을 한다. 하지만 웹 어플리케이션을 운영서버로 만들 경우 얘기는 달라진다. 그 이유는 아래와 같다.

  1. 개발을 한 사람과 실제 서비스를 운영하는 Admin은 다른 경우가 많기 때문에 소스 레벨에서 설정되어 있는 것보다 WAS에서 설정이 되어 있는 것을 선호한다.
  2. 또한 WAS에 여러 개의 웹 어플리케이션을 올려서 사용하기 때문에 WAS에서 한 번에 설정해 주는 것이 자원낭비를 줄일 수 있다.
    • WAS가 관리하지 않고 n개의 어플리케이션들이 동일 db를 본다면, DB pool도 n개가 나오게 되기 때문에 WAS 설정으로 자원낭비를 줄인다.
  3. 장애가 나거나 성능이 정상적이지 못하면 다른 한 서버가 대신 일을 해줄 수 있다.
    • failover 기능이라고 하며, DB1에 장애가 발생하면 백업 DB2로 로드밸런싱을 해야한다.

 

 

위와 같이 JNDI 는 운영, 관리, 최적화 문제 대해 다양한 이점이 있기 때문에 JNDI를 사용한다.

img

 

참고블로그
https://nastyle.tistory.com/15