sql >> Databáze >  >> RDS >> Mysql

Kdy je Class.forName potřeba při připojování k databázi přes JDBC ve webové aplikaci?

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.




  1. Jak získat ID z databáze po kliknutí na položku listview v Androidu

  2. Načítání textu UTF-8 z MySQL v R vrací ????

  3. Vyhněte se opakování záznamů zobrazovaných v MySQL / PHP

  4. Je možné GROUP BY více sloupců pomocí MySQL?