2017-02-01 3 views
2

Derby documentation ditDerby Network Server - Accepter les connexions de plusieurs hôtes - derby.drda.host

derby.drda.host = nom d'hôte

La propriété écoute un hôte pour les connexions réseau iE accepte connexions d'eux. Si 0.0.0.0 est spécifié, les connexions de n'importe quel hôte sont acceptées.

Maintenant, j'ai trois ordinateurs distants, hostA, hostB, hostC.

  • Mon serveur derby fonctionne sur hostA.
  • Je veux serveur derby à écouter pour les connexions de hostA, hostB, hostC

Alors, j'ai écrit

props.setProperty("derby.drda.host", "hostA hostB hostC"); 

Cependant, cela ne fonctionne pas. Y a-t-il un autre moyen?

Edit:

Quand je mets la propriété comme

props.setProperty("derby.drda.host" , "hostA"); 

puis hostB et hostC sont pas capable de se connecter au serveur. Ils obtiennent exception ci-dessous

java.sql.SQLNonTransientConnectionException: java.net.ConnectException : Erreur de connexion au serveur hostA sur le port 8888 avec le message Connexion refusée: se connecter.

Cependant, quand je mis la propriété en

props.setProperty("derby.drda.host" , "0.0.0.0"); 

tous les hôtes (hostA, hostB, hostC) sont capables de se connecter au serveur.

Répondre

1

Je crois que vous avez mal compris à quoi cette propriété est utilisée. C'est ainsi que vous pouvez dire à Derby sur quel IP du serveur accepter les connexions, si vous avez plusieurs interfaces réseau. (Beaucoup de serveurs ont plus d'une carte réseau, ou sont connectés à plusieurs réseaux en même temps et ont donc plusieurs adresses IP). Le paramètre par défaut 0.0.0.0 signifie qu'il doit accepter toute connexion demandée sur l'un des IP du serveur. Si vous définissez cette valeur sur autre chose que 0.0.0.0, il écoutera uniquement les connexions ciblant uniquement cette adresse IP.

Cela ne limite pas les connexions client basées sur leur IP.

je crois que vous devez avoir l'ensemble suivant:

System.setProperty("derby.drda.startNetworkServer", "true"); 

Pour démarrer Derby comme un serveur de réseau (et ne fonctionne pas seulement dans la machine virtuelle Java, comme je crois que le comportement par défaut a été).

+2

Vous voulez dire qu'un serveur peut avoir plus d'un IP (interface) et cette propriété est de dire à derby quelle interface (en spécifiant IP) pour écouter les connexions. Spécifier '0.0.0.0' signifie que derby devrait écouter n'importe quelle IP (interface) sur ce serveur. Droite ? – SimpleGuy

+0

Mais j'ai observé une chose. Lorsque je démarre le serveur avec 'props.setProperty (" derby.drda.host "," hostA ")' alors les clients distants ne parviennent pas à se connecter, quand je spécifie props.setProperty ("derby.drda.host" \t \t \t, "0.0 .0.0 ")' puis les clients distants sont capables de se connecter .. Pourquoi? – SimpleGuy

+0

A votre premier commentaire - oui; à la seconde, quels sont les IP-s réels? – carlspring