Cannot create JDBC driver of class '' for connect URL 'null'
dbcp가 무엇입니까.
dbcp란 데이터 베이스와 미리 연결된 커넥션을 만들어서 pool에 저장해두었다가 커넥션에게 요청이 있을때,
pool에서 가져다 쓰고 다시 반환해주는 기법입니다.
미리 생성해두고 있기때문에 데이터베이스의 부하를 줄이고 , 유동적으로 연결관리가 가능한 아주 유용한 기술입니다.
학원 선생님께서 알려주신대로 dbcp를 잘 이해했으나, 한가지 셋팅의 부족함때문에 나는 이런 에러를 마주할 수 밖에 없었습니다.
빨간 줄의 에러 메시지를 보면,
Cannot create JDBC driver of class '' for connect URL 'null' 로써, 연결할 URL이 없다 라고 뜹니다.
이 jdbc란 기법을 사용하기 위해선 몇가지 설정이 필요합니다.
JDBC 환경 설정하기
1.라이브러리 추가
- 톰캣 6.0 이전 버전 : commons-dbcp.jar, commons-pool.jar, commons-collections.jar
- 톰캣 6.0 이후 버전 : tomcat-dbcp.jar
이 jar 파일을 찾아서 webContent - Web-INF - lib 내부에 넣어줍니다.
2.Servers - tomcat - context.xml 파일 설정
위 파일을 열면,
<context></context> 태그 내부에 아래와 같은 설정이 필요합니다.
<Resource name="jdbc/basicjsp(데이타베이스이름 , JNDI로 호출될 이름을 설정)"
auth="Container(Container 거나 Application이거나 - DBCP를 관리할 관리자)"
type="javax.sql.DataSource(해당 resource의 return type)"
factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory(dbcp를 유용하는 관리 클래스)"
driverClassName="com.mysql.jdbc.Driver(dbcp를 이용하기 위한 드라이버클래스)"
url="jdbc:mysql://localhost:3306/basicjsp(DB의 접속 유알엘)"
username="test(db 접속 아이디)" password="test(db 접속 비번)"
maxActive="100" maxIdle="30" maxWait="10000"
removeAbandoned="true" removeAbandonedTimeout="60"/>
3.WEB-INF - web.xml 설정
dbcp를 사용하기위해 드라이버를 만졌으니, 이용하는 주체인 웹컨텐트에도 설정을 해줘야 합니다.
<resource-ref>
<description>My SQL Resource</description><!-- 리소스 설명 -->
<res-ref-name>jdbc/basicjsp</res-ref-name><!-- 리소스 이름(JNDI명) -->
<res-type>javax.sql.DataSource</res-type><!-- 리턴 Type -->
<res-auth>Container</res-auth><!-- 관리 계층 -->
</resource-ref>
위 3가지 절차를 밟아서 dbcp를 사용할 준비를 모두 마쳤습니다.
이제 코딩을 분석하면 됩니다.
요약정리
첫째 DBCP를 사용하려면, 톰캣 서버에 맞는 jar파일을 넣습니다.
둘째 톰캣서버에게 DBCP에 걸맞는 설정을 .<context></context> 내부에 넣어줍니다.
셋재 사용의 주체가 되는 프로젝트에게도 web.xml에 두번째 작업에서 설정한 값을 바라볼 수 있도록 함께 설정해줍니다.
자 이제 그럼 모두 DBCP 풀에 빠져봅시다!
'web > 오류정리' 카테고리의 다른 글
| Before start of result set 에러 (0) | 2017.11.28 |
|---|---|
| [이클립스]illegal operation on empty result set mysql 해결방법 (0) | 2017.11.20 |
| input disabled css ie8 (0) | 2017.06.01 |
| 인스타그램 샌드박스 모드 -웹사이트 연동 (0) | 2017.05.29 |
| Uncaught RangeError: Maximum call stack size exceeded (0) | 2017.04.04 |