[RESOLVIDO]Correr um .jar com acesso a base de dados a partir dum servidor

Boas, o que eu quero fazer é ter o programa e a base de dados numa pasta num servidor e depois partilhar essa pasta para postos de trabalho.
O problema é que está a dar um erro de Communications Link failure.
Aqui está o código que eu estou a utilizar para ligar á base de dados:

[code]
private boolean ligarBaseDados() {
String ip = JOptionPane.showInputDialog(this, “Por favor insira o endereço IP da máquina.”, “INSIRA IP”, JOptionPane.INFORMATION_MESSAGE);
String user = JOptionPane.showInputDialog(this, “Por favor insira o nome de utilizador da base de dados.”, “INSIRA NOME DE UTILIZADOR”, JOptionPane.INFORMATION_MESSAGE);
String pass = JOptionPane.showInputDialog(this, “Por favor insira o a palavra passe da base de dados.”, “INSIRA PASS”, JOptionPane.INFORMATION_MESSAGE);
try {
Class.forName(“com.mysql.jdbc.Driver”);
url = “jdbc:mysql://” + ip + “:3306/BaseDadosCookManager”;
ligacao = DriverManager.getConnection(url, user, pass);
instrucao = ligacao.createStatement();
JOptionPane.showMessageDialog(this, “Ligou com sucesso”);
return true;
}
catch(CommunicationsException ex){
JOptionPane.showMessageDialog(this, "URL: " + url + "\nO erro é : " + ex.getMessage());

    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(this, "Erro de sql, por favor contacte o programador." + ex.getMessage(), 
                "FALTA DE CONHECIMENTOS", JOptionPane.ERROR_MESSAGE);
    } catch (ClassNotFoundException ex) {
        JOptionPane.showMessageDialog(this, "Erro de sql, por favor contacte o programador." + ex.getMessage(), 
                "FALTA DE CONHECIMENTOS", JOptionPane.ERROR_MESSAGE);
    }         
    return false;
    }  
}[/code]

e o erro é o seguinte:

[quote]
Jun 21, 2013 11:48:05 AM Login ligarBaseDados
SEVERE: null
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(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
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:2332)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
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(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
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(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at Login.ligarBaseDados(Login.java:246)
at Login.ligarBaseDados(Login.java:182)
at Login.(Login.java:28)
at Login$2.run(Login.java:161)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:721)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:691)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at java.net.Socket.(Socket.java:425)
at java.net.Socket.(Socket.java:241)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:257)
at com.mysql.jdbc.MysqlIO.(MysqlIO.java:294)
… 32 more[code]

o que é que eu estou a fazer mal?
alguém me pode ajudar?
Cumps

Seu MySQL está habilitado para aceitar conexões remotas?
Caso não esteja vide: http://marcosvreis.wordpress.com/2012/01/30/habilitando-conexo-remota-no-mysql-server/

jweibe
agora está, obrigado por isso, mas continua a dar o mesmo erro, mais alguma solução?

Você ta usando Linux ou Windows no computador onde esta instalado o MySQL?
Se for o Windows verifica se o firewall do windows esta ativo, caso esteja desabilite ele
pra testar ou libera a porta 3306.

jweibe
tem o windows e quando eu fui para testar tinha(e continua a ter) a firewall desativada.
o mysql que está no servidor(visto ser só para teste) é pelo uniserver, acha que pode ser isso?

Ola

vc viu se o usuario tem permissao de acesso remoto ?

  • se nao:
    no pc onde estar o seu banco …
GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'senha' WITH GRANT OPTION;

INSERT INTO user (Host,User,Password) VALUES('%','root',PASSWORD('senha')); 

FLUSH PRIVILEGES;

obs: root@’%’ -> quer dizer que o usuario root pode acessar de qualquer IP remoto ( % )

exemplo no prompt Windows: cd C:\arquivos de programas\mysql\bin
exemplo no prompt Linux: usuario@linuxtal#

mysql -u root --password='senha' -e "GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'senha' WITH GRANT OPTION;"
mysql -u root --password='senha' -e "FLUSH PRIVILEGES;"

verifique se a porta ta liberada …

ver se ajuda !!

boas, desculpem a falta de resposta até hoje mas estive muito ocupado nos últimos dias e só pude vir aqui agora.
Consegui resolver, o problema afinal era no servidor, o host que ele tinha era localhost ou, por número, 127.0.0.1, e eu apenas tive de mudar isso para o endereço ip do servidor, e criar um novo utilizador com permissão para aceder a partir de qualquer endereço ip, pondo o %.
Obrigado pela ajuda.
Cumps