Я пытаюсь подключиться к моей базе данных с помощью класса singelton в java. Это мой текущий код:
public class Database {
public static Database instance;
private Connection connection;
private Database() {
try {
Class.forName("com.mysql.jdbc.Driver");
Log.debug("ok");
this.connection = DriverManager.getConnection("jdbc:mysql://just.not.for.you:3006/database?connectTimeout=5000", "database", "secret");
Log.debug("ok");
} catch (ClassNotFoundException e) {
Log.warn("Cloud not find jdbc driver class");
} catch (SQLException e) {
Log.warn("Cloud not connect to database: " + e.getMessage(), e);
}
}
public static synchronized Database getInstance() {
if(Database.instance == null) {
Database.instance = new Database();
}
return Database.instance;
}
В моем основном классе я вызываю Database.getInstance()
но ничего не происходит. Нет ошибки, нет сообщения с таймаутом. Это кажется бесконечным циклом. Я вижу первое отладочное сообщение в строке 10, но не сообщение в строке 12.
В чем проблема?
Изменить: я могу подключиться к удаленной базе данных с помощью моего локального компьютера с помощью workbench mysql
Я нашел некоторые проблемы в вашем коде!
com.mysql.jdbc.Driver
новым драйвером com.mysql.cj.jdbc.Driver
, поскольку он устарелcom.mysql.jdbc.Driver
для обратной совместимости.
jdbc.drivers
вcom.mysql.jdbc.Driver
или создать файлMETA-INF/services/java.sql.Driver
с именем класса драйвера в качестве содержимого?