본문 바로가기
OS/Windows

tomcat JDBC 설정방법 + Spring Datasource 설정방법(with Tomcat)

by 나비와꽃기린 2019. 1. 21.

java.sql.SQLException: Cannot create JDBC driver of class '' for connect URL 'null' --> JDBC 연결을 못 찾는것. 어딘가 설정이 잘 못 되었다.

Tomcat8 JDBC 설정방법


tomcat 설정파일은 Eclipse에서도 설정 가능 하지만

~설치경로\Tomcat v8.0 Server at localhost-config 에 있는 파일도 같은 경로이니

여기에서도 수정 가능하다.




(1) tomcat의 context.xml 수정한다.


JDBC 연결정보를 입력한다.

<Context></Context> 사이에 입력한다.



Resource 입력내용


<Resource name="jdbc/portletPrefs(데이타베이스이름 , JNDI로 호출될 이름을 설정)" 

auth="Container(Container 거나 Application이거나 - DBCP를 관리할 관리자)"

type="javax.sql.DataSource(해당 resource return type)"

factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory(dbcp를 유용하는 관리 클래스)"

driverClassName="oracle.jdbc.OracleDriver(dbcp를 이용하기 위한 드라이버클래스)"

url="jdbc:oracle:thin:@//XXX.XXX.XXX.XX:PPPP/OOOOO(DB의 접속 유알엘)"

username="XXX(db 접속 아이디)" password="XXXX(db 접속 비번)" 

maxActive="100" 

maxIdle="30" 

maxWait="10000"

removeAbandoned="true"

removeAbandonedTimeout="60"/> 




(2) tomcat의 web.xml 수정한다.


 <resource-ref>

      <description>DB Connection</description>

      <res-ref-name>jdbc/portletPrefs</res-ref-name>

      <res-type>javax.sql.DataSource</res-type>

      <res-auth>Container</res-auth>

  </resource-ref>




(3) JDBC Driver 다운로드, 배치 어플리케이션 lib에 넣어준다.


Tomcat에 배치한 어플리케이션의 WEB-INF에 tomcat.dbcp.jar를 넣어준다.

tomcat.dbcp.jar는 톰캣설치 경로의 lib 폴더에 있다.




- 톰캣 6.0 이전 버전  : commons-dbcp.jar, commons-pool.jar, commons-collections.jar

 - 톰캣 6.0 이후 버전  : tomcat-dbcp.jar





(4) 필자처럼 Oracle DB에 접근하려고 하는거면

ojdbc.jar도 추가~







Spring + Tomcat 의 JDBC 설정

(Spring Datasource)


Spring에서는 해당 jndi 이름으로 connection을 가져다 사용하면 되는데

Tomcat 같은 경우는 java:/comp/env/ 붙여줘야 한다.




<bean id="dataSource"

class="org.springframework.jndi.JndiObjectFactoryBean">

  <property name="jndiName" value="java:/comp/env/jdbc/portletPrefs" />

</bean>






만약 tomcat서버에서 기동할 시 java:/comp/env/ 붙여주지 않으면

다음과 같은 에러가 난다.


org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [config/jdbc-context.xml]: Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: Name [jdbc/portletPrefs] is not bound in this Context. Unable to find [jdbc].


댓글0