Maison >base de données >tutoriel mysql >Pourquoi mon application Tomcat affiche-t-elle « Aucun pilote approprié trouvé » lors de l'utilisation du pool de connexions MySQL ?

Pourquoi mon application Tomcat affiche-t-elle « Aucun pilote approprié trouvé » lors de l'utilisation du pool de connexions MySQL ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-26 15:57:09260parcourir

Why Does My Tomcat Application Show

Correction de l'erreur « Aucun pilote approprié trouvé » lors de l'utilisation des pools de connexion

Problème :

Lorsque vous essayez de vous connecter à un Base de données MySQL via Tomcat à l'aide du regroupement de connexions, l'erreur « Aucun pilote approprié trouvé pour jdbc:mysql://localhost/dbname » se produit. Malgré l'ajout des bibliothèques requises au WEB-INF/lib et au classpath, le problème persiste.

Explication :

Lors de l'utilisation de pools de connexions, l'enregistrement du pilote doit être déclaré en dehors de l'application elle-même. Dans un environnement Tomcat, cela est généralement réalisé en plaçant le fichier jar du pilote dans le dossier lib du serveur (CATALINA_HOME/lib).

Solution :

  1. Placez le fichier jar du pilote dans le dossier lib du serveur : Copiez le fichier jar du pilote MySQL (connector-java-*.jar) sur le Tomcat lib.
  2. Assurez-vous d'une initialisation correcte du pool de connexions : Dans votre code, déplacez l'initialisation du pool de connexions (par exemple, en créant l'instance PoolingDriver) vers une implémentation de ServletContextListener ou un mécanisme d'initialisation similaire qui garantit qu'il est initialisé avant le chargement du contexte d'application.

Exemple ServletContextListener :

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.apache.tomcat.dbcp.dbcp.ConnectionFactory;
import org.apache.tomcat.dbcp.dbcp.DriverManagerConnectionFactory;
import org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory;
import org.apache.tomcat.dbcp.dbcp.PoolingDriver;
import org.apache.tomcat.dbcp.pool.impl.GenericObjectPool;

public class DatabaseInitializer implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        try {
            GenericObjectPool connectionPool = new GenericObjectPool(null);
            ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(
                "jdbc:mysql://localhost/dbname", "test", "password");
            PoolableConnectionFactory poolableConnectionFactory =
                new PoolableConnectionFactory(connectionFactory, connectionPool,
                                                null, null, false, true);
            PoolingDriver driver = new PoolingDriver();
            driver.registerPool("test", connectionPool);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {}
}
  1. Redéployez votre application sur Tomcat :Après avoir effectué ces modifications, redéployez votre application sur Tomcat.

Par en suivant ces étapes, vous devriez être en mesure de résoudre l'erreur « Aucun pilote approprié trouvé » et d'établir une connexion à votre base de données MySQL via Tomcat en utilisant la connexion mise en commun.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn