기술지원 문의

DBConnection poolName에 대해서.
김대일 / 2006-03-01 15:17

여기 사이트를 참고하여 resin3의 DB Pool을 사용하고 있습니다.

 

 

실제로 컨넥션을 받아오는 부분에서는

\"java:comp/env/coolx\" 이라는 이름으로 받아오고,

resin 세팅에는

<database jndi-name=coolx> 로 되어 있습니다.

 

현재 작동은 잘 하는데요.

 

다른데서 보니까

java:comp/env/coolx 이렇게 받아오지 않고 그냥 coolx 이렇게 받아오는 소스가 있더라구요.

(기존 소스를 최대한 손대지 않고 세팅만 맞출려고 하거든요.)

 

혹시 java:comp/env 를 붙이지 않고 그냥 이름만으로 받아오게 할수는 없나요?

 

[답변]DBConnection poolName에 대해서.
권용찬 / 2006-04-21 16:33

JNDI는 JDBC만을 위해 사용 되는 것은 아니기 때문에

comp/enc/jdbc/UserName  식으로 이름을 붙이는 것이 정석입니다.

 

말씀하신 바와 같이 그냥 무시하고 정의 하실 수 는 없고 DB Manager를 만들어서 Manager에서 DB Pool을 Lookup 하도록 하고

 

App 프로그램 시에는 해당 Manager 객체를 호출하는 방식으로 상용하는 것이 정석입니다.

 

만약 최대한 줄이고 싶다면 Context 생성시 lookup을 같이 하는 방법은 있으나 완전히 빼고 하는 방법은 없습니다.

 

아래 두개 예제는 동일한 코드 입니다. 참조 하세요

1.

Context env = new InitialContext();
DataSource ds = (DataSource) env.lookup(\"java:comp/env/jdbc/oracle\");

Connection conn = ds.getConnection();

2.

Context env = (Context) new InitialContext().lookup(\"java:comp/env\");
DataSource ds = (DataSource) env.lookup(\"jdbc/oracle\");

Connection conn = ds.getConnection();