Моята webapp не успя да получи връзка с MySQL, а не с грешката:
Причинено от: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
Сега mysql конектора е ясно в myclasspath: mysql-connector-java-5.0.7-bin.jar, в директорията WEB-INF / lib.
Така че няма смисъл да не е "намерен". Предполагам, че не трябва да се прави някаква статична инициализация.
Има ли някакъв начин да се диагностицира този проблем?
Отговори:
4 за отговор № 1Макар че не бях дошъл с добри диагностични инструменти, освен натрупването на стека, осъзнавах какво се случва. Естествено, натрупването има значението:
Cannot load JDBC driver class "com.mysql.jdbc.Driver"
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1136)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
Източникът на данни е дефиниран в контекст.xml файла в уеб приложението, което означава, че драйверът е бил зареден от Tomcat, използвайки родителския класовете за зареждане в уеб приложението. Това classloader няма достъп до classpath на приложението.
Решението е да изпуснете мишката в браузъра на споделената библиотека на Tomcat.
Друго решение е да се вгради DataSource в приложението, вместо да се използва управлението на DataSource на Tomcat, като по този начин се разрешава разпределение на Tomcat.