본문 바로가기

DB

JNDI 와 JDBC

기관에서는 주기적으로 db 및 서버 접속정보(패스워드)를 바꿔야 한다.

 

근데 기관에서 한 서버에 어플리케이션이 5-6개씩 있는데 각각 소스에 들어가 context를 수정해야하고 심지어 관리해야 할 서버도 30개가 넘는다 ..

 

추가적으로 어떤 어플리케이션 context에는 패스워드를 암호화해서 넣기도 하는데..

 

그러던 중 JNDI 셋팅에 대해 알게 되었다.

 

예전 mybatis같은 것이 없었을 때, 쿼리를 직접 executeQuey를 사용해 날렸었다.

 

인재개발원에서 자바시간에 배웠던 기억이 난다.. preparedStatement였던가 ? 항상 finally에서 다 닫아줘야했었던.. 

 

그러다 context-dataSource.xml에서 jdbc를 이용해 db 접속정보를 저장해서 사용했었는데 ㅋㅋ 학원에서는 따라만 써서 셋팅했었지만 입사 후 db 접속정보를 연결시키는 작업에서 헤멨던 기억이 있다.. 물론 지금도 환경셋팅은 어렵다.

 

암튼 본론으로 돌아와서 connection pool 이라는 것이 있는데(심부름꾼ㅋㅋ), 

 

이 pool 사이즈를 사용자 수 , 서버 성능 등 여러 변수를 고려하여 잘 셋팅해줘야한다.

 

개발원에서 옆반 쌤이 디비 접속 안된다고 pool 사이즈 줄여달라고 했었다 ㅋㅋㅋ 

 

JDBC에선 이 pool을 각각 어플리케이션에서 지정해서 관리한다. 또한 db 접속정보도 각각 어플리케이션마다 셋팅을 해줘야해서 접속 정보가 바뀔 때마다 소스 관리하는 데 어려움을 겪는다.

 

하지만 JNDI를 사용하면 이 pool을 서버에서 관리하기 때문에, 모든 어플리케이션이 pool을 공유하게된다.

또한 접속 정보를 server.xml(tomcat)에 작성하므로, 한군데만 수정하면 모든 어플리케이션에 적용되기 때문에 유지보수성에서 효율적이다.

 

여기 기관은 운영은 현재 제우스에서 돌리고 로컬에선 tomcat을 사용해서 제우스에 JNDI를 적용하는 법을 찾아봤더니, tomcat과 크게 다른게 없는것같다..

 

이 외에도 다른 보안취약점들 조치중인데, 넘 어렵다. 

 

화이팅..