2 votes

Connexion au serveur Java DB (Derby) depuis le réseau

J'ai utilisé le code suivant pour démarrer le serveur Java DB :

System.setProperty("derby.drda.startNetworkServer", "true");
    try {
        NetworkServerControl serverControl = new NetworkServerControl();
        serverControl.start(new PrintWriter(System.out, true));
    } catch (Exception e) {
        e.printStackTrace();
    }

Je peux me connecter à la base de données sur le PC local en utilisant l'URL :

String dbURLTable = "jdbc:derby://localhost:1527/Tables;create=true;user=Gen;password=YZG";

Mais lorsque j'essaie de m'y connecter sur le réseau local (pare-feu désactivé), j'utilise l'URL suivante :

String dbURLTable = "jdbc:derby://192.168.1.105:1527/Tables;create=true;user=Gen;password=YZG";

Pourtant, l'autre PC ne peut pas se connecter à cette base de données, quel est le problème ? L'erreur que je reçois est la suivante :

java.sql.SQLNonTransientConnectionException: java.net.ConnectException : Error connecting to server 192.168.1.106 on port 1,527 with message Connection refused: connect.
    at org.apache.derby.client.am.SQLExceptionFactory.getSQLException(Unknown Source)
    at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
    at org.apache.derby.jdbc.ClientDriver.connect(Unknown Source)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:270)
    at Admin.CreateTables.CreateT(CreateTables.java:188)
    at Admin.CreateTables.run(CreateTables.java:13)
    at java.lang.Thread.run(Thread.java:745)
Caused by: ERROR 08001: java.net.ConnectException : Error connecting to server 192.168.1.106 on port 1,527 with message Connection refused: connect.
    at org.apache.derby.client.net.NetAgent.<init>(Unknown Source)
    at org.apache.derby.client.net.NetConnection.newAgent_(Unknown Source)
    at org.apache.derby.client.am.ClientConnection.<init>(Unknown Source)
    at org.apache.derby.client.net.NetConnection.<init>(Unknown Source)
    at org.apache.derby.client.net.ClientJDBCObjectFactoryImpl.newNetConnection(Unknown Source)
    ... 6 more
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at java.net.Socket.connect(Socket.java:538)
    at java.net.Socket.<init>(Socket.java:434)
    at java.net.Socket.<init>(Socket.java:211)
    at javax.net.DefaultSocketFactory.createSocket(SocketFactory.java:271)
    at org.apache.derby.client.net.OpenSocketAction.run(Unknown Source)
    at org.apache.derby.client.net.OpenSocketAction.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    ... 11 more

3voto

Sanjeev Points 4755

Cela se produit parce que vous créez NetworkServerControl en utilisant le constructeur 0-arg NetworkServerControl() dont ne permet pas les connexions à distance

Vous devez utiliser NetworkServerControl(InetAddress address, int portNumber) afin de autoriser les connexions à distance

//accepts connections from other hosts on an IPv4 system
NetworkServerControl serverControl = 
  new NetworkServerControl(InetAddress.getByName("0.0.0.0"),1527);

Pour plus de détails veuillez voir ceci

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X