2016-06-28 3 views
-1

Я знаю, что другие люди опубликовали об этом, но никто из них, похоже, не ответил на мою проблему. Всякий раз, когда один из моих серверов загружается, он должен подключаться к базе данных, и я бегу от где-то между 4-10 серверами весь день, а некоторые из них загружаются вверх/вниз каждый так часто. И только НЕКОТОРЫЕ mysql отказывается от соединения localhost.Соединение Java JDBC отклонено

MySQL код подключения:

Class.forName("com.mysql.jdbc.Driver"); 
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/DATABASE?connectTimeout=15000", "USERNAME", "PASSWORD"); 

Где это говорит DATABASE, USERNAME & ПАРОЛЬ, это только, чтобы скрыть информацию о пользователе MySQL.

Я получаю эту ошибку только ИНОГДА при подключении:

[15:52:13] [Craft Scheduler Thread - 2/WARN]: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at com.mysql.jdbc.Util.handleNewInstance(Util.java:407) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:343) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2334) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2371) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2163) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at com.mysql.jdbc.Util.handleNewInstance(Util.java:407) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:378) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at java.sql.DriverManager.getConnection(DriverManager.java:664) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at java.sql.DriverManager.getConnection(DriverManager.java:247) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at me.Swedz.core.MySQL.createPool(MySQL.java:17) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at me.Swedz.lobby.Lobby$1.run(Lobby.java:73) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftTask.run(CraftTask.java:71) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:53) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at java.lang.Thread.run(Thread.java:745) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: Caused by: java.net.ConnectException: Connection refused 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at java.net.PlainSocketImpl.socketConnect(Native Method) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at java.net.Socket.connect(Socket.java:589) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at java.lang.reflect.Method.invoke(Method.java:498) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:327) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:292) 
[15:52:13] [Craft Scheduler Thread - 2/WARN]: ... 21 more 

Line 17 в me.Swedz.core.MySQL.createPool находится где соединение инициализируется (вторая строка в коде соединения MySQL при условии, прежде чем эта ошибка).

В настоящее время мой адрес связывания = 127.0.0.1, который лучше всего подходит для меня. Поскольку, когда он установлен на 0.0.0.0 или localhost, эта ошибка возникает чаще.

Это продолжает происходить все чаще и чаще с течением времени. Эта проблема вызывает разочарование и почти невозможность работать на моих серверах.

Редактировать: Я считаю, что мне удалось решить проблему самостоятельно. Я изменил код подключения на что-то совсем другое. И, кажется, не ошибка вообще! Мой новый код подключения MySQL:

MysqlDataSource ds = new MysqlDataSource(); 
ds.setDatabaseName("DATABASE"); 
ds.setUser("USERNAME"); 
ds.setPassword("USER PASSWORD"); 
ds.setServerName("localhost"); 
ds.setPort(3306); 
connection = ds.getConnection(); 
+0

Возможный дубликат [com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: отказ канала связи] (http://stackoverflow.com/questions/2983248/com-mysql-jdbc -exceptions-jdbc4-communicationsexception-communication-link-fai) – zombie

+1

Нет, @zombie. Это не дубликат. Если вы внимательно прочитаете сообщение, вы увидите, что моя проблема встречается только с ИНОГДАМИ. Где «дублирующаяся» почта происходит все время, а моя только НЕКОТОРЫЕ. – Swedz

+1

Если это только что начатый сервер, на котором работают как ваши DB, так и приложения, разве не возможно, что mysql еще не запущен до того, как ваше приложение попытается подключиться? Если это так, просто обработайте это исключение, ожидая секунду или два, и попробуйте снова подключиться. – Rob

ответ

0

Мне удалось решить проблему самостоятельно. Я изменил код подключения на что-то совсем другое. И, кажется, не ошибка вообще! Мой новый код подключения MySQL:

MysqlDataSource ds = new MysqlDataSource(); 
ds.setDatabaseName("DATABASE"); 
ds.setUser("USERNAME"); 
ds.setPassword("USER PASSWORD"); 
ds.setServerName("localhost"); 
ds.setPort(3306); 
connection = ds.getConnection(); 
0

из приведенного ниже кода,

connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/DATABASE?connectTimeout=15000", "USERNAME", "PASSWORD");<br/> 

удалить connectionTimeout=15000, он теряет связь каждый 15 второй может быть.

+0

Я уже решил это самостоятельно, просто забыл опубликовать ответ: P – Swedz

Смежные вопросы