Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/12/2010, 10h59   #1
Invité de passage
 
Inscription : mai 2002
Messages : 15
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 15
Points : 1
Points : 1
Par défaut Pb de connexion distant avec JDBC

Bonjour,

J'ai un pb d'accés à Postgresql via le réseau. Le contexte est le suivant :

sur un serveur Linux Ubuntu, j'ai un serveur postgresql 8.4 avec une table nommée 'testpersonne'. Cette machine est accessible depuis notre réseau local mais possède également une adresse IP fixe : 78.227.216.xxx

sur mon poste de travail sous Windows XP, j'ai développé une application basée sur une servlet tournant sur un Tomcat fonctionnant en local sur mon ordi. Par contre, j'accède à la base de données hébergée par le serveur Linux.

Pour cela, j'utilise un driver JDBC et la ligne suivante JAVA :
jdbc:postgresql://78.227.216.xxx:5432/testpersonne

Tout fonctionne parfaitement!

De plus, depuis mon poste XP, je peux me connecter à cette BDD soit depuis pgAdminIII, soit depuis phppgadmin se trouvant sur la même machine que postgresql.

Maintenant je mets ma servlet sur le serveur Tomcat se trouvant lui aussi sur la même machine Linux que le serveur postgresql et ça ne marche plus. J'ai le message suivant :

Connexion refusée. Vérifiez que le nom de machine et le port sont corrects et que postmaster accepte les connexions TCP/IP.

Après quelques recherches sur Internet, j'ai trouvé quelques pistes sur des modifications de paramétrage à faire mais ça ne marche toujours pas. Voici les modifs faites :

fichier postgresql.conf :
listen_addresses = '*'
port = 5432

fichier pg_hda.conf :
local all postgres md5
host all all 78.227.216.xxx/32 trust
host all all 0.0.0.0/0 trust
# TYPE DATABASE USER CIDR-ADDRESS METHOD

# "local" is for Unix domain socket connections only
local all all ident
# IPv4 local connections:
host all all 127.0.0.1/32 md5

J'ai fait le test suivant :
sudo netstat -tlp | grep postgres
tcp 0 0 *:postgresql *:* LISTEN 27181/postgres
tcp6 0 0 [::]:postgresql [::]:* LISTEN 27181/postgres

Et celui-ci :
sudo psql -h 78.227.216.xxx-d testpersonne
psql: could not connect to server: Connection timed out
Is the server running on host "78.227.216.155" and accepting
TCP/IP connections on port 5432?

En résumé : le Tomcat de mo ordi XP peut faire une connexion sur postgresql se trouvant sur une autre machine alors que le Tomcat se trouvant sur la même machine que PostgreSQL n'y arrive pas. Etrange non?

Merci d'avance,

Philippe
juhel philippe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 13h53   #2
Modérateur
 
Inscription : octobre 2008
Messages : 1 504
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 504
Points : 2 033
Points : 2 033
"Connection timed out" est typique de l'effet d'un firewall. Il y a du filtrage de paquet (iptables) sur la machine?
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 15h21   #3
Invité de passage
 
Inscription : mai 2002
Messages : 15
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 15
Points : 1
Points : 1
Merci pour votre réponse.

Je n'avais pas Firewall actif sur la machine Linux mais en cherchant autours d'un possible pb lié au réseau, j'ai fini par corriger le disfonctionnement :

le pb venait du fait que ma machine avait 2 adresses IP : une publique (78.227.216.xxx venant d'une box Free) et une privée (192.168.x.x), or lorsque la requête était émise depuis mon PC vers l'adresse 78.227.216.x, c'était en vérité une requête qui était faite par l'adresse 192.168.x.x et donc la machine Linux ne se rendait pas compte qu'elle s'adressait à elle même, que c'était la même machine.

Pour corriger ça, comme mes deux serveurs (Tomcat et PostgreSQL) sont sur le même serveur, j'ai mis comme adresse 127.0.0.1 pour la connection JDBC et ça marche!!!

Philippe
juhel philippe est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h12.


 
 
 
 
Partenaires

Hébergement Web