Ovladače JDBC4 obsahují soubor:
META-INF/services/java.sql.Driver
v jar, který používá mechanismus ServiceProvider k registraci implementace ovladače u JVM (viz javadocs pro java.util.ServiceLoader
). Proto Class.forName
již není nutné.
Domnívám se, že jde o problém se zavaděčem třídy. ServiceLoader
javadoc uvádí, že:
Zkusil bych vložit váš ovladač do tomcat\lib
spíše než adresář vaší webové aplikace, abyste zjistili, zda je to rozdíl (zavaděč jiné třídy?).
Pokud svou webovou aplikaci spustíte pomocí nápadu a nastavíte bod přerušení, jakmile dosáhnete bodu přerušení, můžete použít funkci "vyhodnotit výraz" ke spuštění:ServiceLoader.load(Driver.class)
. Tím získáte ServiceLoader
třídy, do které můžete nahlédnout a zjistit, kteří ovladače jsou registrovány. Můžete zkontrolovat, zda existuje ovladač mysql, kde v seznamu je atd., což by mohlo pomoci při zjišťování chování zde.