mysql - 如何修复 : "No suitable driver found for jdbc:mysql://localhost/dbname" error when using pools?

标签 mysql jdbc tomcat7 apache-commons-dbcp

<分区>

我正在尝试创建到我的数据库的连接,当我使用 main 方法测试我的代码时,它可以无缝运行。但是,当尝试通过 Tomcat 7 访问它时,它失败并出现错误:

No suitable driver found for jdbc:mysql://localhost/dbname. 

我正在使用池化。我在 WEB-INF/lib 和 .classpath 中也放入了 mysql 连接器 (5.1.15)、dbcp (1.4) 和 pool(1.4.5) 库。我正在使用 Eclipse IDE。我的数据库驱动程序代码是:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

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 DatabaseConnector {
    public static String DB_URI = "jdbc:mysql://localhost/dbname";
    public static String DB_USER = "test";
    public static String DB_PASS = "password";

    // Singleton instance
    protected static DatabaseConnector _instance;

    protected String _uri;
    protected String _username;
    protected String _password;

    /**
     * Singleton, so no public constructor
     */
    protected DatabaseConnector(String uri, String username, String password) {
        _uri = uri;
        _username = username;
        _password = password;

        GenericObjectPool connectionPool = new GenericObjectPool(null);
        ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(
            _uri, _username, _password);
        PoolableConnectionFactory poolableConnectionFactory =
            new PoolableConnectionFactory(connectionFactory, connectionPool,
                                            null, null, false, true);
        PoolingDriver driver = new PoolingDriver();
        driver.registerPool("test", connectionPool);
    }

    /**
     * Returns the singleton instance
     */
    public static DatabaseConnector getInstance() {
        if (_instance == null) {
            _instance = new DatabaseConnector(DB_URI, DB_USER, DB_PASS);
        }
        return _instance;
    }

    /**
     * Returns a connection to the database
     */
    public Connection getConnection() {
        Connection con = null;
        try {
            con = DriverManager.getConnection("jdbc:apache:commons:dbcp:test");
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        return con;
    }
}

我的堆栈跟踪的开始:

Apr 5, 2011 9:49:14 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [Login] in context with path [/Project] 
threw exception
java.lang.RuntimeException: java.sql.SQLException: 
No suitable driver found for jdbc:mysql://localhost/dbname

是什么导致了这个错误?

最佳答案

尝试将驱动程序 jar 放入服务器 lib 文件夹中。 ($CATALINA_HOME/lib)

我认为甚至在应用程序实例化之前就需要设置连接池。 (至少在 Jboss 中是这样的)

关于mysql - 如何修复 : "No suitable driver found for jdbc:mysql://localhost/dbname" error when using pools?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46255405/

相关文章:

hadoop - 使用 Apache Drill Embedded 连接到 EMR 上的 Hive

java - Java循环中的查询只执行一次

java - Tomcat 7.0 无法从 Eclipse 启动

php - MySQL查询进度信息

php - 多个 url 链接变量

java - Oracle getConnection 慢

java - Java Web 应用程序中的内存泄漏

java - Tomcat DLL 已加载到另一个类加载器中

mysql - 如何将这个 mysql 查询更改为高效的查询

php - 使用 mySQLi 保留字和函数 - 安全