DB

[DB] JNDI란? + Server에 JNDI 적용 시키기

blackzapato 2019. 11. 30. 06:29
반응형

 

 

 

국비교육 협동 프로젝트 중 팀원 중에 한 명이 JNDI와 Mybatis를 사용해 DB와 연결시키는(?)

나에게는 다소 생소한 방법을 사용해서 몇 자 적어보려 한다.

 

 

우선 JNDI란?

https://soul0.tistory.com/286

 

JNDI 이용한 DB connection과 JDBC(DBCP)만 이용한 DB Connection

JNDI 이용한 DB connection과 JDBC(DBCP)만 이용한 DB Connection 안녕하세요. JNDI 와 JDBC의 차이점이 뭘까? 거기서 거기 같은데 도대체 뭔차이지.. 둘다 DB 연결할때 쓰는 용어같은데 정답은 두가지 방법이 각..

soul0.tistory.com

블로그에서 굉장히 친절하게 설명해주고 있다

 

 

요약:

JNDI란? 

Java Naming and Directory interface의 약자로 DB Pool을 미리 Naming 시켜두는 방법(DB 연결방법 중 하나)

 

왜 사용? 

보통 우리는 JDBC를(DBCP)설정해서 개발을 한다 하지만 웹 어플리케이션을 운영서버로 만들경우 얘기는 달라진다.

 

그에 따른 이유

1.  개발을 한 사람과 실제 서비스를 운영하는 Admin은 다른 경우가 많기 때문에 소스 레벨에서 설정되어 있는 것보다

WAS에서 설정이 되어 있는 것을 선호합니다.

 

2. 또한 WAS에 여러 개의 웹 어플리케이션을 올려서 사용하기 때문에 WAS에서 한 번에 설정해 주는 것이 자원낭비를 줄일 수 있습니다.

 

3. 장애가 나거나 성능이 정상적이지 못하면 다른 한 서버가 대신 일을 해줄 수 있습니다.

 

정리 

운영, 관리, 최적화 문제 대처에 다양한 이점이 있기 때문에 JNDI를 사용한다.

 

 

 

 

이제는 이클립스 Server 디렉터리에 적용시켜보자

 

두개의 파일만 수정하면 된다

 

 

1. Servers -> tomcat -> context.xml

// <context></context> 안 하단에 

<ResourceLink global="jdbc/XE" 
                  name="jdbc/XE" 
                  type="javax.sql.DataSource"/>

 

 

2.  Servers -> tomcat -> server.xml

//<GlobalNamingResources></GlobalNamingResources> 안에

<Resource name="jdbc/XE" 
              auth="Container" 
              type="javax.sql.DataSource" 
              driverClassName="oracle.jdbc.driver.OracleDriver" 
              factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory" 
              url="jdbc:oracle:thin:@localhost:1521:XE" 
              username="스키마이름" 
              password="스키마비밀번호" 
              maxActive="20" 
              maxIdle="10" 
              maxWait="-1" />

 

 

 

반응형