[jndi] JNDI 란 무엇입니까? 기본 사용법은 무엇입니까? 언제 사용됩니까?

  • JNDI 란 무엇입니까 ?

  • 기본 사용법은 무엇입니까?

  • 언제 사용됩니까?



답변

JNDI 란 무엇입니까?

Java 이름 지정 및 디렉토리 인터페이스를 나타냅니다 .

기본 사용법은 무엇입니까?

JNDI를 통해 분산 응용 프로그램은 추상적이고 리소스에 독립적 인 방식으로 서비스를 조회 할 수 있습니다.

언제 사용 되나요?

가장 일반적인 사용 사례는 Java EE 애플리케이션 서버에서 데이터베이스 연결 풀을 설정하는 것입니다. 해당 서버에 배치 된 모든 애플리케이션은 연결에 java:comp/env/FooBarPool대한 세부 사항을 몰라도 JNDI 이름 을 사용하여 필요한 연결에 액세스 할 수 있습니다 .

여기에는 몇 가지 장점이 있습니다.

  1. 앱이 devl->int->test->prod환경에서 이동하는 배포 순서가있는 경우 각 환경에서 동일한 JNDI 이름을 사용하고 사용중인 실제 데이터베이스를 숨길 수 있습니다. 환경간에 마이그레이션 할 때 응용 프로그램을 변경할 필요가 없습니다.
  2. 프로덕션 데이터베이스에 액세스하기위한 자격 증명을 알아야하는 사람의 수를 최소화 할 수 있습니다. JNDI를 사용하는 경우 Java EE 앱 서버 만 알아야합니다.

답변

JNDI 란 무엇입니까?

JNDI ( Java Naming and Directory Interface TM )는 Java TM 프로그래밍 언어를 사용하여 작성된 애플리케이션에 이름 지정 및 디렉토리 기능을 제공하는 API (Application Programming Interface)입니다 . 특정 디렉토리 서비스 구현과 독립적으로 정의됩니다. 따라서 다양한 디렉토리 (신규, 신흥 및 이미 배포 된)에 공통된 방식으로 액세스 할 수 있습니다.

기본 사용법은 무엇입니까?

그것의 대부분은 위의 답변에서 다루어 지지만 위의 내용이 더 이해되도록 여기에 아키텍처를 제공하고 싶습니다.

여기에 이미지 설명을 입력하십시오

JNDI를 사용하려면 JNDI 클래스와 하나 이상의 서비스 제공자가 있어야합니다. Java 2 SDK, v1.3에는 다음 이름 지정 / 디렉토리 서비스에 대한 세 개의 서비스 제공자가 포함되어 있습니다.

  1. LDAP (Lightweight Directory Access Protocol)
  2. CORBA (Common Object Request Broker) 아키텍처 공통 오브젝트 서비스 (COS) 이름 서비스
  3. Java 원격 메소드 호출 (RMI) 레지스트리

따라서 기본적으로 개체를 만들고 디렉터리 서비스에 등록하면 나중에 조회하고 작업을 수행 할 수 있습니다.


답변

layman의 용어로 JNDI는 기본적으로 다음과 같은 내부 / 외부 리소스 인스턴스를 얻을 수있는 인터페이스입니다.

  javax.sql.DataSource,
  javax.jms.Connection-Factory,
  javax.jms.QueueConnectionFactory,
  javax.jms.TopicConnectionFactory,
  javax.mail.Session, java.net.URL,
  javax.resource.cci.ConnectionFactory,

또는 JCA 자원 어댑터에 의해 정의 된 다른 유형. 내부 또는 외부 액세스를 작성할 수있는 구문을 제공합니다. 즉 (이 경우 comp / env는 구성 요소 / 환경, 다른 많은 구문이있는 곳을 의미합니다) :

jndiContext.lookup("java:comp/env/persistence/customerDB");


답변

JNDI 개요

JNDI는 Java 기술로 지정된 API로 Java 프로그래밍 언어로 작성된 응용 프로그램에 이름 지정 및 디렉토리 기능을 제공합니다. 특히 Java 객체 모델을 사용하는 Java 플랫폼 용으로 설계되었습니다. Java 기술 기반 애플리케이션은 JNDI를 사용하여 모든 유형의 이름 지정된 Java 오브젝트를 저장하고 검색 할 수 있습니다. 또한 JNDI는 속성을 객체와 연관시키고 속성을 사용하여 객체를 검색하는 등의 표준 디렉토리 작업을 수행하는 방법을 제공합니다.

JNDI는 특정 이름 지정 또는 디렉토리 서비스 구현과 독립적으로 정의됩니다. 애플리케이션이 공통 API를 사용하여 여러 가지 이름 지정 및 디렉토리 서비스에 액세스 할 수 있습니다. 다른 이름 지정 및 디렉토리 서비스 제공자를이 공통 API 뒤에 완벽하게 연결할 수 있습니다. 이를 통해 Java 기술 기반 애플리케이션은 LDAP, NDS, DNS 및 NIS (YP)와 같은 다양한 기존 이름 지정 및 디렉토리 서비스의 정보를 활용할 수있을뿐만 아니라 애플리케이션이 레거시 소프트웨어 및 시스템과 공존 할 수 있습니다.

JNDI를 도구로 사용하면 Java의 오브젝트 모델을 활용할뿐만 아니라 배치 된 환경과 잘 통합 된 강력하고 이식 가능한 새로운 애플리케이션을 빌드 할 수 있습니다.

참고


답변

JNDI 란 무엇입니까?

JNDI는 Java Naming and Directory Interface의 약어입니다. J2EE에는 표준으로 제공됩니다.

기본 사용법은 무엇입니까?

이 API를 사용하면 객체, 장치, 이름 지정 파일 및 디렉토리 서비스와 같은 여러 유형의 데이터에 액세스 할 수 있습니다. EJB가 원격 객체를 찾기 위해 사용합니다. JNDI는 DNS, NDS, LDAP, CORBA 및 RMI와 같은 기존 서비스에 액세스하기위한 공통 인터페이스를 제공하도록 설계되었습니다.

언제 사용 되나요?

JNDI를 사용하여 네임 스페이스 업데이트를위한 읽기 조작 및 조작을 포함하여 이름 지정 조작을 수행 할 수 있습니다. 다음 작업이 여기 에 설명되어 있습니다 .


답변

이름 지정 서비스는 이름을 오브젝트와 연관시키고 주어진 이름을 기반으로 오브젝트를 찾습니다 (RMI 레지스트리는 이름 지정 서비스의 좋은 예입니다.) JNDI는 LDAP, DNS와 같은 많은 기존 이름 지정 서비스에 대한 공통 인터페이스를 제공합니다.

JNDI가 없으면 원격 자원의 위치 또는 액세스 정보는 응용 프로그램에서 하드 코딩되거나 구성에서 사용 가능해야합니다. 이 정보를 유지 관리하는 것은 매우 지루하고 오류가 발생하기 쉽습니다.


답변

공식 문서 가 왜 그렇게 무시되어 세부 사항을 세 심하게 정교하게 설명 했는지 궁금합니다 .

그러나 사례를 이해하려면 duffymo의 답변을 참조하십시오 .

JNDI ( Java Naming and Directory Interface TM )는 Java TM 프로그래밍 언어를 사용하여 작성된 애플리케이션에 이름 지정 및 디렉토리 기능을 제공하는 API (Application Programming Interface)입니다 . 특정 디렉토리 서비스 구현과 독립적으로 정의됩니다. 따라서 새로운 디렉토리, 새로운 디렉토리 및 이미 배치 된 다양한 디렉토리에 공통된 방식으로 액세스 할 수 있습니다.

그리고 그 아키텍처

여기에 이미지 설명을 입력하십시오

그리고 일반적으로 당신이 그것을 사용하는 방법 .