Java Naming and Directory Interface
java에서 Naming and Directory Service를 사용할 수 있게 하는 라이브러리.
각 데이터베이스에 대한 서비스를 디렉토리 형태로 등록할 수 있다.
jndi name 으로 database 정보를 가져온다.
<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에서 설정.
<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에 대한 이름 등록
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를 찾아온다.
<jee:jndi-lookup id="dataSource" jndi-name="jdbc/myoracle" resource-ref="true" />
혹은 xml 파일 내부에서 jndi-lookup 태그를 통해 dataSource를 찾아올 수 있다.