Приветствие, у меня есть некоторая проблема с JDBC, он настолько медленный, что невероятно.
Тот же код прекрасно работает при подключении Windows к удаленной базе данных.
Но в slackware требуетсякак 30 секунд для подключения, и первая попытка всегда терпит неудачу.Я должен был обойти это, чтобы попытаться снова, чтобы убедиться, что он соединяется.Но даже это не должно быть таким медленным.
с помощью команды mysql в bash, кажется, соединяется мгновенно.
Вот код, используемый для создания базы данных
public static Object createDBConnection(String dbType, String host, String hostPort, String dbName, String userName, String password) {
String connectionString = buildConnectionString(dbType, host, hostPort, dbName, userName, password);
Connection connection = null;
try {
if(dbType.equals(K_dbTypeMySQL)){
Class.forName("com.mysql.jdbc.Driver");
}else if(dbType.equals(K_dbTypeSqlServer)){
Class.forName("net.sourceforge.jtds.jdbc.Driver");
}else if(dbType.equals(K_dbTypeSqlServerExpress)){
Class.forName("net.sourceforge.jtds.jdbc.Driver");
}else if(dbType.equals(K_dbTypePostgres)) {
Class.forName("org.postgresql.Driver");
}
connection = DriverManager.getConnection(connectionString);
return connection;
}
catch (Exception e)
{
e.printStackTrace();
return null;
}
}
public static String buildConnectionString(String dbType, String host, String hostPort, String dbName, String userName, String password){
String connectionString = null;
if((dbType.equals(K_dbTypeMySQL))){
connectionString = "jdbc:mysql://" + host + ":" + hostPort + "/" + dbName + "?user=" + userName + "&password=" + password;
}else if((dbType.equals(K_dbTypeSqlServer)))
connectionString = "jdbc:jtds:sqlserver://" + host + ":" + hostPort + ";databaseName=" + dbName + ";selectMethod=cursor;user=" + userName + ";password=" + password;
else if((dbType.equals(K_dbTypeSqlServerExpress)))
connectionString = "jdbc:jtds:sqlserver://" + host + ":" + hostPort + ";databaseName=" + dbName + ";selectMethod=cursor;user=" + userName + ";password=" + password;
else if(dbType.equals(K_dbTypePostgres))
connectionString = String.format("jdbc:postgresql://%s:%s/%s?user=%s&password=%s",host,hostPort,dbName,userName,password);
return connectionString;
}
Iпробовал использовать разные драйверы, но одно и то же, первая попытка всегда требует подключения (20 секунд), вторая - 2 секунды.
У меня возникает одна и та же проблема при попытке открыть URL-адрес https с помощью URLConnection всегдаНе удается во второй раз без проблем.
У кого-нибудь есть понимание этой проблемы?Так как у меня есть проблема с открытием URL HTTPS с Java, может быть, некоторые проблемы с SSL?MySQL использует SSL в любом случае?
версия сервера: 5.1.41
хост: localhost
Драйвер jdbc: 5.1.8, 5.1.12, 5.1.17 (все проблемы одинаковы)
сборка java: root @ LinuxMZ: ~ / nx_dev / sicm # java -version версия java "1.6.0_06" Java (TM) среда выполнения SE (сборка 1.6.0_06-b02) Java HotSpot (TM) Клиент VM (сборка10.0-b22, смешанный режим, совместное использование)
// EDIT 127.0.0.1 и localhost делают ту же проблему
спасибо за вашу помощь
Пока ничего,DBManager.createConnection зависает на 20 секунд.Я пытался подключиться с другой машины, и она работает без нареканий.