Buscar
Social
Ofertas laborales ES

Foro sobre Java EE > com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

¡Buenos días!

Tengo un problema al intentar conectar mi programa java que ejecuto en mi pc local contra una base de datos mysql alojada en un hosting "Jelastic".

Me funciona perfectamente al ejecutarlo contra una base de datos local idéntica a la que tengo en el hosting.

He tratado de montar varias versiones mysql-connector-java-1.5.17- 21 etc bin.jar en lib, como jar externa, etc etc, pero nada.

He modificado la configuración de mysql para que acepte conexiones externas, pero sin lograr ningún resultado positivo.

El error que me muestra es el siguiente :

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.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
at com.mysql.jdbc.MysqlIO.(MysqlIO.java:344)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2333)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2370)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2154)
at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:792)
at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at paquete.MySQLAccess.readDataBase(MySQLAccess.java:38)
at paquete.main.main(main.java:15)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.(Unknown Source)
at java.net.Socket.(Unknown Source)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:257)
at com.mysql.jdbc.MysqlIO.(MysqlIO.java:294)
... 16 more

He creado un pequeño programa para intentar ver donde esta el problema, aquí os paso el código, y si fuese necesario os daría mi usuario y contraseña del hosting para que podais revisar el problema con mas profundidad, pues yo llevo 5 días con este tema y no resuelvo nada ...

package paquete;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;

public class MySQLAccess {
private Connection connect = null;
private Statement statement = null;
private PreparedStatement preparedStatement = null;
private ResultSet resultSet = null;

public void readDataBase() throws Exception {
try {
// This will load the MySQL driver, each DB has its own driver
// Class.forName("com.mysql.jdbc.Driver");
// Setup the connection with the DB
// connect = DriverManager
// .getConnection("jdbc:mysql://localhost/feedback?"
// + "user=sqluser&password=sqluserpw");
System.out.println("uno");


String dbName = "veotaxi";
String dbUserName = "root";
String dbPassword = "wCahzpyjmu";
//String dbPassword = "";

String connectionString = "jdbc:mysql://mysql-env-3621162.jelastic.dogado.eu/" + dbName + "?user=" + dbUserName + "&password=" + dbPassword + "&useUnicode=true&characterEncoding=UTF-8";
//String connectionString = "jdbc:mysql://localhost/" + dbName + "?user=" + dbUserName + "&password=" + dbPassword + "&useUnicode=true&characterEncoding=UTF-8";
System.out.println("Url : " + connectionString);

connect = DriverManager
.getConnection(connectionString);
System.out.println("dos");
// Statements allow to issue SQL queries to the database
statement = connect.createStatement();
System.out.println("tres");
// Result set get the result of the SQL query
resultSet = statement
.executeQuery("select * from peticion");
writeResultSet(resultSet);

Espero su respuesta
Un Saludo

Antonio Jesús

enero 28, 2013 | Unregistered Commenterajesus

Hola

Una pregunta, ¿puedes conectar normalmente con el cliente mysql contra la base de datos que tienes en jelastic?. Probablemente lo tengas más fácil con las propias herramientas de la base de datos que liarte a hacer programas de depuración, y por la traza parece problema de red.

Saludos

Saúl

enero 28, 2013 | Registered Commentersaulario

Hola !
Creo que entiendo lo que me comentas.

Es la primera vez que monto un proyecto en un hosting, en este caso esta montado con apache 7 y Mysql 5.5.25.
He lanzado un proyecto de ejemplo que te suministra jelastic, pero tampoco crea la base de datos que presuntamente el proyecto ejemplo debe crear.

Con PhpAdmin y la url de Con phpadmin y la url de jelastic entro perfectamente, cosa
evidente pues me he creado la base de dato y un par de tablas.

Al ver que tenia problemas, mi hice un pequeño código para atacar a la base de datos que tengo en el hosting de jelastic, es decir, abrir base de datos y lanzar una
select * from peticion, para ver como me respondia, pero nada, casque tras casque.

Ya comente en el post anterior, que este mismo pequeño proyecto que he creado para probar jelastic, lo lanzo contra mi mysql que tengo en mi maquina local y funciona perfectamente, con lo cual ...... Uhhhh, ni idea.

Espero a ver contestado a lo que me estabas preguntando.

Muchas gracias por atender mi post, y espero que no me dejes, pues llevo desde el
lunes pasado, a cabezazos con el problema ya, no se por donde atacarle.

Un Saludo
Antonio Jesús

enero 28, 2013 | Unregistered Commenterajesus

Hola

He estado probando y, efectivamente, todo parece estar correcto. Lo que me sorprende es que en la configuración del servidor tienes puesto el puerto por defecto (3306) pero, sin embargo, no lo muestra cuando haces un nmap.


Starting Nmap 5.21 ( http://nmap.org ) at 2013-01-28 12:17 CET
Nmap scan report for mysql-env-3621162.jelastic.dogado.eu (92.51.168.106)
Host is up (0.037s latency).
rDNS record for 92.51.168.106: n92-51-168-106.cnet.hosteurope.de
Not shown: 993 closed ports
PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
80/tcp open http
443/tcp open https
4848/tcp open unknown
8080/tcp open http-proxy
8443/tcp open https-alt

Yo lo he intentado con la línea de comando y me ha dado el siguiente error


scorreas@pc010180:/usr/include$ mysql -h mysql-env-3621162.jelastic.dogado.eu -u root -p --secure-auth test
Enter password:
ERROR 2003 (HY000): Can't connect to MySQL server on 'mysql-env-3621162.jelastic.dogado.eu' (111)

Y por lo que he visto siempre va relacionado con la configuración de la red.

¿No será que tu host tiene activado un firewall y sólo publica aquellos puertos que en principio puedes necesitar?.

Siento no haberte podido ayudar más.

Saludos

Saúl

enero 28, 2013 | Registered Commentersaulario

Hola de nuevo !

Es decir, que debería ponerme en contacto con jelastic, para ver este tema de los puertos que tienen abiertos para este servicio. No ???

Muchas Gracias

Voy a tirar por ahí, para ver donde me llega.
Al menos me has abierto una nueva linea de investigación, pues estaba ya bloqueado.

Gracias y espero contestarte con la solución

enero 28, 2013 | Unregistered Commenterajesus

Efectivamente, creo que lo tienes que hablar con el proveedor. Parece razonable que al estar en hosting tengan un nivel alto de seguridad. Probablemente les tendrás que decir un rango de ip's a las que quieras que responda la base de datos. A ver si tienes suerte por este lado.

Yo estoy igual que tu desde hace una semana pero con un problema con Geronimo que me esta volviendo loco. A ver si yo encuentro a alguien que me eche un cable.

Saludos

enero 28, 2013 | Registered Commentersaulario

Hola !
Ya les he mandado un post utilizado tu respuesta para ver que me dicen.

Yo de Geronimo ni idea.

Pues nada suerte.

Ya te contare como queda la batalla.

Un Saludo


Antonio Jesús

enero 28, 2013 | Unregistered Commenterajesus

A raíz de tu último post, mire para ver que era Geronimo, y joeer, de Apache

Nada nada,

Como se dice, nunca te acostaras sin saber algo nuevo.

Hasta Luego

enero 29, 2013 | Unregistered Commenterajesus

Disculpen que reviva el tema, el mismo problema estoy experimentando nose se habran llegado lucionar .

Desde ya agradezco su tiempo!!

junio 16, 2017 | Unregistered Commenterunknown