Java 명명 및 디렉토리 인터페이스
Java Naming and Directory InterfaceJava Naming and Directory Interface(JNDI; Java 이름 및 디렉토리 인터페이스)는 Java 소프트웨어 클라이언트가 이름을 통해 데이터와 리소스를 검색하고 검색할 수 있는 디렉토리 서비스용 Java API입니다.호스트 시스템과 인터페이스하는 모든 Java API와 마찬가지로 JNDI는 기본 구현과는 독립적입니다.또한 디렉토리 서비스 구현을 [1]프레임워크에 연결할 수 있는 Service Provider Interface(SPI; 서비스 공급자인터페이스)를 지정합니다.JNDI를 통해 검색된 정보는 서버, 플랫 파일 또는 데이터베이스에 의해 제공될 수 있습니다.선택사항은 사용하는 구현에 따라 달라집니다.
JNDI의 일반적인 용도는 다음과 같습니다.
- Java 응용 프로그램을 외부 디렉토리 서비스(주소 데이터베이스 또는 LDAP 서버 등)에 연결
- Java Servlet이 호스팅 웹[2] 컨테이너에서 제공하는 구성 정보를 검색하도록 허용합니다.
배경
Java RMI 및 Java EE API는 [3]JNDI API를 사용하여 네트워크에서 개체를 검색합니다.
API는 다음을 제공합니다.
- 사물을 이름에 묶는 기구
- 일반적인 쿼리를 허용하는 디렉토리 인터페이스
- 클라이언트가 디렉토리 엔트리가 변경된 시기를 판단할 수 있는 이벤트인터페이스
- LDAP 서비스의 추가 기능을 지원하는 LDAP 확장
SPI 부분에서는 다음과 같은 실질적으로 모든 종류의 이름 지정 또는 디렉토리 서비스를 지원할 수 있습니다.
Sun Microsystems는 1997년 [4]3월 10일에 JNDI 사양을 처음 발표했습니다.2006년 현재[update] 버전은 JNDI 1.2입니다.
기본 조회
JNDI(Java Naming and Directory Interface)는 이름을 계층으로 정리합니다.이름은 "com.example.ejb"와 같은 임의의 문자열일 수 있습니다.마이빈.이름은 또한 다음 기능을 구현하는 개체일 수도 있습니다.Name
단, 오브젝트에 이름을 붙이는 가장 일반적인 방법은 문자열입니다.이름은 이름으로 식별되는 디렉토리 서비스의 오브젝트 또는 오브젝트에 대한 참조를 저장함으로써 디렉토리 내의 오브젝트에 바인드됩니다.
JNDI API는 개체를 검색할 위치를 지정하는 컨텍스트를 정의합니다.초기 컨텍스트는 일반적으로 시작점으로 사용됩니다.
가장 간단한 경우 구현에 필요한 특정 구현 및 추가 매개 변수를 사용하여 초기 컨텍스트를 생성해야 합니다.초기 컨텍스트는 이름을 검색하기 위해 사용됩니다.초기 컨텍스트는 파일 시스템의 디렉토리 트리의 루트 또는 상단과 유사합니다.초기 콘텍스트를 작성하는 예를 다음에 나타냅니다.
해시 테이블 contextArgs(콘텍스트알) = 신규 해시 테이블< >스트링, 스트링>(); // 먼저 컨텍스트 팩토리를 지정해야 합니다. // 이것은 jboss 구현 중 하나를 선택하는 방법입니다. // Sun 또는 기타 벤더의 구현과 비교됩니다. contextArgs(콘텍스트알).놓다( 맥락.초기_콘텍스트_팩토리, "com.jndiprovider.They Context Factory(These Context Factory' ); // 다음 인수는 데이터 저장소의 위치를 지정하는 URL입니다. contextArgs(콘텍스트알).놓다( 맥락.프로바이더_URL, "jndiprovider-moder" ); // (보안 credential을 입력해야 할 수도 있습니다) // 그런 다음 초기 컨텍스트를 만듭니다. 맥락 myCurrentContext = 신규 초기 콘텍스트(contextArgs(콘텍스트알));
그런 다음 콘텍스트를 사용하여 해당 콘텍스트에서 이전에 바인딩된 이름을 검색합니다.예를 들어 다음과 같습니다.
마이빈 마이빈 = (마이빈) myCurrentContext.찾다("com.mydomain.마이빈);
상기 코드의 대체 방법은 다음과 같습니다.
Context 객체는 초기 컨텍스트팩토리 클래스 이름과 공급자 URL이 포함된 클래스 경로에 jndi.properties 파일을 추가하여 구성할 수도 있습니다.위 코드는 다음과 같이 감소합니다.
//초기 컨텍스트오브젝트를 작성하기만 하면 클래스 패스에서 jndi.properties 파일을 읽으려고 합니다. 맥락 myCurrentContext = 신규 초기 콘텍스트();
그런 다음 콘텍스트를 사용하여 해당 콘텍스트에서 이전에 바인딩된 이름을 검색합니다.예를 들어 다음과 같습니다.
마이빈 마이빈 = (마이빈) myCurrentContext.찾다("com.mydomain.마이빈);
검색 중
속성은 디렉토리라고 하는 특수한 엔트리에 부가할 수 있습니다.디렉토리를 사용하면 연관된 속성별로 개체를 검색할 수 있습니다.디렉토리는 컨텍스트의 한 종류이며 파일 시스템의 디렉토리 구조와 [5]마찬가지로 이름 공간을 제한합니다.
「 」를 참조해 주세요.
레퍼런스
- ^ "Java SE - Core Technologies - Java Naming and Directory Interface (JNDI)". www.oracle.com. Retrieved 2016-12-17.
- ^ "JNDI Resources HOW-TO". Apache Tomcat 7 User Guide. Apache Software Foundation. Retrieved 21 January 2014.
- ^ "JNDI/RMI Registry Service Provider". docs.oracle.com. Retrieved 2016-12-17.
- ^ "SUN MICROSYSTEMS, INC. INTRODUCES JAVA NAMING AND DIRECTORY INTERFACE API". sun.com. 1997-03-10. Archived from the original on 2004-09-08.
- ^ "Search Filters". docs.oracle.com. Retrieved 2016-12-17.