[JNDI] JNDI에 대하여

HyeJin Jeon·2020년 5월 18일
1

JNDI

Java Naming and Directory Interface

java에서 Naming and Directory Service를 사용할 수 있게 하는 라이브러리.
각 데이터베이스에 대한 서비스를 디렉토리 형태로 등록할 수 있다.


JNDI를 사용한 DB 연결

jndi name 으로 database 정보를 가져온다.

context configuration

<Resource name="jdbc/myoracle" auth="Container"
              type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
              url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"
              username="scott" password="tiger" maxTotal="20" maxIdle="5"
              maxWaitMillis="-1"/>

maxIdle: 미리 연결해두는 최대 연결수

메모리 번지수 대신 이름으로 관리.
이름 등록은 아래의 web.xml에서 설정.

web.xml configuration

<resource-ref>
  <description>Oracle Datasource example</description>
  <res-ref-name>jdbc/myoracle</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
</resource-ref>

res-ref-name: Resource에 대한 이름 등록

servlet

Context initContext = new InitialContext();
Context envContext  = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");
Connection conn = ds.getConnection();
//etc.

이처럼 jndi 이름을 통해 dataSource를 찾아온다.

config.xml

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/myoracle" resource-ref="true" />

혹은 xml 파일 내부에서 jndi-lookup 태그를 통해 dataSource를 찾아올 수 있다.

profile
Backend Developer

0개의 댓글