본문 바로가기

개발/JSP

웹 어플리케이션 구동시 JDBC 드라이버 로딩하기

JDBC 드라이버는 한 번만 로딩하면 이후로 계속해서 사용할 수 있기 때문에 JSP페이지에서 매번 JDBC 드라이버를 로딩할 필요는 없다.

웹 어플리케이션이 시작될 때 자동으로 JDBC 드라이버를 로딩하도록 다음과 같은 서블릿 클래스를 사용한다.

WEB-INF\src\kame\jdbc\loader\Loader.java
package kame.jdbc.loader;

import javax.servlet.http.HttpServlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import java.util.StringTokenizer;

public class Loader extends HttpServlet {
	public void init(ServletConfig config) throws ServletException {
		try {
			String drivers = config.getInitParameter("jdbcdriver");
			StringTokenizer st = new StringTokenizer(drivers, ",");
			while(st.hasMoreTokens()){
				String jdbcDriver = st.nextToken();
				Class.forName(jdbcDriver);
			}
		} catch(Exception ex) {
			throw new ServletException(ex);
		}
	}
}

Loader.java를 컴파일 한 다음에는 웹 어플리케이션이 시작될 때 자동으로 Loader 서블릿 클래스가 실행되도록 설정해 주어야 한다. 다음과 같이 web.xml 파일에 <servlet> 태그를 추가해 준다.

WEB-INF\web.xml
<?xml version="1.0" encoding="euc-kr"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
						http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">
	
	<servlet>
		<servlet-name>JDBCDriverLoader</servlet-name>
		<servlet-class>kame.jdbc.loader.Loader</servlet-class>
		<init-param>
			<param-name>jdbcdriver</param-name>
			<param-value>com.mysql.jdbc.Drvier</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
</web-app>

톰캣을 재시작 한다.