Open kgh2120 opened 9 months ago
Java에서 제공하는 API 중 하나로, 다양한 네이밍 및 디렉토리 서비스에 접근하게 해주는 인터페이스이다.
쉽게 말해, \ JNDI는 이름을 사용하여 다양한 리소스나 객체에 접근할 수 있게 해주는 도구고,
예를 들어, 네트워크 상의 특정 서비스나 애플리케이션 내의 객체 등에 이름을 기반으로 찾아 접근할 때 JNDI를 사용할 수 있다.
Context:
JNDI의 중심 인터페이스로, 이름과 객체 사이의 바인딩을 관리하며, 객체를 조회하거나 바인딩/언바인딩하는 연산을 제공.
디렉토리 서비스에서는 추가적으로 객체의 속성에 대한 연산도 제공.
InitialContext:
import javax.naming.Context;
import javax.naming.InitialContext;
public class JndiExample {
public static void main(String[] args) {
try {
// InitialContext 객체 생성
Context initialContext = new InitialContext();
// JNDI를 사용하여 객체 조회
Object obj = initialContext.lookup("java:comp/env/someResource");
// ... 리소스 사용 ...
} catch (Exception e) {
e.printStackTrace();
}
}
}
Tomcat의 context.xml
<Resource name="jdbc/MyDB"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="db_user"
password="db_password"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mydb"/>
Java 코드에서 JNDI를 사용하여 데이터베이스 연결 얻기 :
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import java.sql.Connection;
public class JndiDbConnectionExample {
public static void main(String[] args) {
try {
// JNDI 초기 컨텍스트 생성
Context initialContext = new InitialContext();
// DataSource 조회
DataSource ds = (DataSource) initialContext.lookup("java:comp/env/jdbc/MyDB");
// 데이터베이스 연결 얻기
Connection conn = ds.getConnection();
// ... 데이터베이스 작업 ...
// 연결 종료
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
https://go-coding.tistory.com/76 https://itworldyo.tistory.com/entry/JNDI%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94
👍 문제
12장 DB를 사용하면서 발생 가능한 문제점들 파트를 보면 JNDI라는 명칭이 굉장히 많이 등장합니다. JNDI라는 녀석을 이용해서 어떤 작업을 수행하는 모양입니다. JNDI를 검색해보니 아래와 같이 설명하는데, 여전히 저와는 어색하네요. JNDI가 어떤 녀석이고 어떤 상황에서 사용하는지 정리해주세요!
✈️ 선정 배경
JNDI
라는 이름.. 저만 처음 들어보나요? 이 책을 읽으면서 모르는 부분은 많았지만, 완전히 처음 들어본 녀석이라 골라봤습니다.📺 관련 챕터 및 레퍼런스
story12. DB를 사용하면서 발생 가능한 문제점들
🐳 비고