웹 어플리케이션 프로젝트를 분석하다가 다음과 같은 오류가 계속 발생했다.



javax.naming.NamingException: Could not load resource factory class [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]

라는 오류가 발생하였고 인터넷을 검색하던 중 오류를 해결할 수 있게 되었다.

실제로 현재 톰캣8.5 버전을 사용하고 있는데,


1
2
3
4
5
6
7
8
9
10
11
12
 <Context>
     <Resource name="jdbc/OracleDB" 
         auth="Container"
         type="javax.sql.DataSource" 
         username="dbid23geb" 
         password="dbpass23geb"
         driverClassName="oracle.jdbc.OracleDriver"
         factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
         url="jdbc:oracle:thin:@localhost:1521:XE"
         maxActive="500" 
         maxIdle="100"/>  
 </Context>
cs


Context Resource factory 요소를 다음과 같이 사용하고 있었다.

factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"

톰캣8.0 이상을 사용하는 경우에는 factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory" 로 바꿔줘야 한다.

톰캣7.0 이하일 경우 dpcp, 톰캣8.0 이상일 경우에는 dbcp2로 사용하면 된다.

+ Recent posts