0

I created a properties file

url=jdbc:mysql://localhost:3306/web13?useSSL=false&serverTimezone=UTC
username=root
password=root

and I created a connection pool

    private static DataSource dataSource; 
static {

    try {
        //load properties file
        InputStream is = DBCPUtils.class.getClassLoader().getResourceAsStream("db.properties");
        //load input stream
        Properties props = new Properties();
        props.load(is);
        //create data source
        dataSource = BasicDataSourceFactory.createDataSource(props);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        throw new RuntimeException(e);
    }
}

Then I got the problem. I searched some anwsers, they said driver needs to be registered like Class.forName(com.mysql.jdbc.Driver). But my version of driver seems to be able to register by itself, so this solution can not work.

Error:

Oct 02, 2018 9:46:09 AM org.apache.catalina.core.StandardContext reload INFO: Reloading Context with name [/WEB13] is completed

java.sql.SQLException: Cannot create JDBC driver of class '' for connect URL 'jdbc:mysql://localhost:3306/web13?useSSL=false&serverTimezone=UTC' at org.apache.commons.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2224) at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2104) at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1563) at org.apache.commons.dbutils.AbstractQueryRunner.prepareConnection(AbstractQueryRunner.java:319) at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:327) at com.itheima.login.LoginServlet.doGet(LoginServlet.java:36) at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:770) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748) Caused by: java.sql.SQLException: No suitable driver at java.sql.DriverManager.getDriver(DriverManager.java:315) at org.apache.commons.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2209) ... 29 more

2

3 Answers 3

0

Your properties file is missing a property, which means the DBCP is not able to create/initialize the driver.

You need to add

driverClassName = org.mysql.jdbc.Driver
Sign up to request clarification or add additional context in comments.

Comments

0

@Ziyan Zhu,

You have added wrong url in db.properties:

url in db properties be like jdbc:mysql://localhost:3306/web13 where web13 is your database name.

In addition you are missing some method in your connection pool as described over here

import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;

public class DBCPUtils {
    private static DataSource dataSource;
    static {
        try {
            // 1.Load the properties file input stream
            InputStream is = DBCPUtils.class.getClassLoader().getResourceAsStream("db.properties");
            // 2.Load the input stream
            Properties props = new Properties();
            props.load(is);
            // 3.create data source
            dataSource = BasicDataSourceFactory.createDataSource(props);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public static DataSource getDataSource() {
        return dataSource;
    }

    public static Connection getConnection() {
        try {
            return dataSource.getConnection();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
}

Comments

-1

i just had the same problem, but i was working with glassfish. if there is anyone in the future who has this problem attempting establishing a database connection in glassfish server, the solutions is to add java mysql connector to glassfish server then your problem is solved.

go to .../glassfish-installation-folder/Glassfish[your-version]/glassfish/lib/here-paste-your-mysql-connector-driver.jar

it's my pleasure. :)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.