Conexión remota java mysql

Con respecto a las conexiones JAVA - MYSQL, cuando las quiero realizar de manera remota no realiza la conexión
public String url = "jdbc:mysql://209.51.195.116:3306/base_datos";
conn = DriverManager.getConnection(url, "usuario_bd", "password_bd");
  

El error que me sale cuando intento realizar la conexion 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.

1 Respuesta

Respuesta
1
¿Por casualidad estás trabajando en una red local que tiene un proxy para salir a internet? Si es así, le tienes que decir a Java dónde está ese proxy. Para saber si te estas conectando a internet a través de un proxy, lo puedes ver en el Internet Explorer, en:
"Herramientas/Opciones de Internet/Conexiones/Configuración LAN/Servidor Proxy - botón Avanzadas"
Cuando dispongas de este dato, puedes hacer dos cosas:
1) Iniciar Java con parámetros. En este ejemplo, el puerto es el 80, aunque hay proxies que escuchan en otro puerto, como el 8080:
java -Dhttp.proxyHost=mi.servidor.proxy -Dhttp.proxyPort=80 MyJavaApp
2) Establecer los proxy settings por programación, antes de hacer la conexión JDBC:
System. SetProperty("http.proxyHost", "mi.servidor.proxy"); System.setProperty("http.proxyPort", "80");
public String url = "jdbc:mysql://209.51.195.116:3306/base_datos";
conn = DriverManager.getConnection(url, "usuario_bd", "password_bd");
Bueno, ya me dirás si te ha funcionado.
Bueno, primero gracias por responder mi pregunta,
primero no me conecto a internet a través de un proxy, lo hago a través de un router,
estuve investigando un poco, no se si este en lo correcto pero creo que necesito abrir el puerto e mysql en mi servidor donde esta la base de datos(es decir en mi hosting de internet), ahora creo que realizar ese procedimiento es un poco riesgoso, puedo realizar la conexión remota a través de un web service, es decir sin necesidad de abrir ningún puerto, (por lo del riesgo y por que m servidor de hosting no me da esa opción), y ahora se me genera otra duda, la velocidad de conexión, es decir si tengo una "aplicación de escritorio" en diferentes lugares que se conecta a una base de datos de internet, que tan rapido se van a realizar las consultas a esa base de datos, seria como realizar las consultas a través e una página web, o seria más lento.
Que me recomendarías
Bueno gracias por tu respuesta y por tu tiempo
Saludos
Por lo que parece, no tenía toda la información necesaria para contestarte. A ver, si no te he entendido mal tienes:
A) Un hosting de internet que te permite tener una base de datos SQL.
B) Clientes JAVA que se tienen que conectar a la base de datos.
C) Posibilidad de alojar servicios web en tu hosting.
Pues veo dos posibilidades:
1) Si te lo permite el hosting, que lo dudo, abrir el puerto de la base de datos. Las conexiones JDBC por lo general se abren con usuario y contraseña, pero es cierto que esta conexión puede no ser muy segura, porque alguien que esté "espiando" la transmisión podría pillarte la contraseña. Se que hay bases de datos que ofrecen drivers JDBC que permiten una seguridad extra, pero eso depende de la base de datos que estés usando, y de las capacidades de administración que tengas sobre ella. Puedes investigar esta opción, pero si te digo la verdad, lo veo crudo.
2) Como bien propones, usar servicios web como capa de conexión entre los clientes Java y la base de datos. Traslada toda la lógica de acceso a datos al servidor, a clases independientes de los web services, es decir, que los web services usen las clases DAO para acceder a los datos y montar un XML resultado. La velocidad no se tiene por qué ver penalizada, siempre que en la parte servidora uses un pool de conexiones JDBC, es decir, no abras una conexión nueva por cada llamada a un web service.
Podrías explorar otras vías como RMI o CORBA, pero desde que los web services han entrado en escena, el uso de estas tecnologías está cada vez más en desuso.
Bueno, espero haberte ayudado algo. Si puedo ayudarte en algo más, ya sabes donde encontrarme.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas