본문 바로가기
Java/정리

[java] tomcat 버전 오류

by 콧등치기국수 2022. 4. 5.

프로젝트 업데이트를 받은 후 서버를 실행하니 아래와 같이 바로 오류가 났다.

javax.naming.NamingException: Could not load resource factory class [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.jdbc.pool.DataSourceFactory]
at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:81)

-------------------------------------생략------------------------------------------

(--생략--) The DB Connection Pool did not receive a connection from the database.

 

처음에는 2번째 오류만 보고 DB연결이 잘 되지 않는거라고 생각했다.

실제로 설정파일에서 db pool이 변경되었는데 그에 따라 server.xml에 db정보가 적혀있어야 했는데 없었기 때문이다. 

하지만 server.xml에 db정보를 추가해줘도 동일한 오류가 났다. 그래서 살펴보니 첫번째 오류가 문제였다.

 

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

DataSourceFactory라는 클래스를 찾지 못해 발생하는 오류라고 해서 검색해보니 Tomcat JDBC Pool은 톰캣 버전 7.0.19 이상부터 도입되었다고 해서 버전을 올려야 한다는 글을 발견했다. 

(참고 : https://stackoverflow.com/questions/5723830/java-lang-classnotfoundexception-org-apache-tomcat-jdbc-pool-datasourcefactory)

 

그래서 8.0.37버전으로 변경하려고 보니 jdk도 7이상으로 써야한다고 해서 jdk도 1.8 버전으로 바꿔서 결국 자바 버전과 톰캣 버전 모두 변경을 하였다.

 

이제 모든 버전을 바꿨으니 오류가 나지 않아야 하는데 또 아래와 같이 오류가 났다.ㅠㅠㅠㅠ

 

이것저것 검색해보니 Tomcat 버그이기 때문에 이 문제가 해결된 8.0.42 이상으로 사용해야한다고 했다.

(참고 : https://avaiable.tistory.com/261)

 

이제 제발 끝났으면 하고 8.0.42 이상 버전의 톰캣을 새로 설정해주니 오류없이 잘 돌아갔다ㅠㅠㅠ

 

아마 이런 오류는 이제 거의 없을 것 같지만 그래도 혹시 다음에도 생긴다면 빨리 찾으면 좋겠다.