JDBC4 драйверите включват файл:
META-INF/services/java.sql.Driver
в бурканчето, което използва механизма на ServiceProvider за регистриране на реализацията на драйвера с JVM (вижте javadocs за java.util.ServiceLoader
). Ето защо Class.forName
вече не е необходимо.
Предполагам, че това е проблем със зареждане на класове. ServiceLoader
javadoc споменава, че:
Бих опитал да сложа вашия драйвер в tomcat\lib
директория, а не директория на вашето уеб приложение, за да видите дали това прави разлика (различен зареждане на класове?).
Ако стартирате вашето уеб приложение чрез ide и зададете точка на прекъсване, след като ударите точката на прекъсване, можете да използвате функцията „оценка на израза“, за да изпълните:ServiceLoader.load(Driver.class)
. Това ще ви даде ServiceLoader
клас, в който можете да надникнете, за да видите кои драйвери са регистрирани. Можете да проверите дали драйверът на mysql е там, къде в списъка се намира и т.н., което може да ви помогне да разберете поведението тук.