Java에서 JNDI와 그 용도

Muhammad Zeeshan 2023년6월20일
  1. Java의 Java 명명 및 디렉토리 인터페이스(JNDI)
  2. Java에서 JNDI 사용
  3. Java에서 JNDI의 장단점
Java에서 JNDI와 그 용도

이 기사에서는 JNDI(Java Naming and Directory Interface)가 무엇인지, 주요 용도 및 사용 시기에 대해 설명합니다. 또한 Java에서 JNDI의 장단점을 비교합니다.

Java의 Java 명명 및 디렉토리 인터페이스(JNDI)

Java 프로그램은 애플리케이션 프로그래밍 인터페이스(API)인 JNDI의 이름 및 디렉토리 기능을 사용할 수 있습니다.

분산 시스템에서도 활용이 가능합니다. 즉, 시스템에 여러 서버가 있어도 모든 서버에서 정보를 공유할 수 있습니다.

  • 예를 들어 JNDI 디렉토리를 사용하여 애플리케이션 서버의 IP 주소와 같은 구성 데이터를 저장할 수 있으며 앱은 이 정보를 검색할 수 있습니다.
  • JNDI는 디렉토리 서비스 구현과 독립적으로 작동하도록 의도되었습니다. 결과적으로 사용자는 신규, 개발 및 이미 구현된 디렉토리를 포함하여 광범위한 디렉토리에 액세스할 수 있습니다.

Java에서 JNDI 사용

JNDI를 사용하여 개체, 장치, 이름 파일 및 디렉터리 서비스 등과 같은 다양한 종류의 데이터에 액세스할 수 있습니다. 예를 들어 EJB는 이를 사용하여 원격 개체를 찾습니다.

‘JNDI’는 ‘DNS’, ‘NDS’, ‘LDAP’, ‘CORBA’ 및 ‘RMI’와 같은 기존 서비스에 표준화된 진입점을 제공하기 위해 개발되었습니다.

따라서 JNDI 클래스와 하나 이상의 서비스 공급자가 있어야 JNDI를 활용할 수 있습니다. Java 2 SDK는 아래 나열된 이름 및 디렉토리 서비스에 대해 세 가지 다른 서비스 공급자를 제공합니다.

  • 경량 디렉터리 액세스 프로토콜(LDAP)
  • Common Object Request Broker Architecture(CORBA) Common Object Services(COS) 이름 서비스
  • Java 원격 메소드 호출(RMI) 레지스트리

따라서 먼저 개체를 빌드한 다음 디렉터리 서비스에 등록하여 나중에 개체를 조회하고 작업을 수행할 수 있습니다.

Java에서 JNDI의 장단점

다음은 JNDI가 제공하는 몇 가지 이점입니다.

  • 애플리케이션이 devl->int->test->prod 환경에서 마이그레이션되는 배포 시퀀스를 사용하는 경우 각 환경에서 동일한 JNDI 이름을 사용하여 사용되는 실제 데이터베이스를 은폐할 수 있습니다.
  • 응용 프로그램이 환경 간에 마이그레이션될 때 변경할 필요가 없습니다.
  • 읽기 작업 및 네임스페이스 수정 작업과 같은 명명 작업은 JNDI를 사용하여 실행할 수 있습니다.
  • 프로덕션에서 데이터베이스에 액세스해야 하는 사람의 수는 최소한으로 유지될 수 있습니다. JNDI의 사용법은 Java EE 애플리케이션 서버를 제외한 모든 사람에게 숨겨질 수 있습니다.
  • 리소스가 JNDI 디렉토리에 나열되어 있는 한 코드는 단일 컴퓨터 또는 분산 환경에서 리소스에 액세스할 수 있습니다.
  • 강력하고 휴대 가능한 새로운 앱을 만들 수 있습니다. 또한 Java의 객체 모델을 사용하며 배포되는 환경과 잘 연결되어 있습니다.

단점 중 하나는 다음과 같습니다.

  • 단점 중 하나는 기본 보안 모델이 없다는 것입니다. 그러나 일부 구현에서는 디렉토리 서비스에 대한 암호화된 연결을 설정하기 위한 API를 제공합니다.
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn