Quindi, hai un
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:collegamento di comunicazione non riuscito
java.net.ConnectException:connessione rifiutata
Sto citando da questa risposta che contiene anche un tutorial passo passo su MySQL+JDBC:
Se ricevi un SQLException: Connection refused
o Connection timed out
o un CommunicationsException:
Communications link failure
specifico per MySQL , allora significa che il DB non è affatto raggiungibile. Ciò può avere una o più delle seguenti cause:
- L'indirizzo IP o il nome host nell'URL JDBC è errato.
- Il nome host nell'URL JDBC non è riconosciuto dal server DNS locale.
- Numero di porta mancante o errato nell'URL JDBC.
- Il server DB è inattivo.
- Il server DB non accetta connessioni TCP/IP.
- Il server DB ha esaurito le connessioni.
- Qualcosa tra Java e DB sta bloccando le connessioni, ad es. un firewall o un proxy.
Per risolvere l'uno o l'altro, segui i seguenti consigli:
- Verificali e testali con
ping
. - Aggiorna il DNS o utilizza invece l'indirizzo IP nell'URL JDBC.
- Verificalo in base a
my.cnf
di MySQL DB. - Avvia il DB.
- Verifica se mysqld è stato avviato senza l'opzione
--skip-networking option
. - Riavvia il DB e correggi il codice in modo che chiuda le connessioni in
finally
. - Disabilita il firewall e/o configura firewall/proxy per consentire/inoltrare la porta.
Vedi anche:
- Come devo connettermi al database/origine dati JDBC in un'applicazione basata su servlet?
- È sicuro utilizzare un'istanza java.sql.Connection statica in un sistema multithread?