Connexion à une base PostgreSQL avec JDBC4 - e

publicité
FC-Vélizy
Connexion à une base PostgreSQL avec JDBC4
Groupe « Administrateur de BD JAVA »
SUJET
La dernière version du logiciel JDBC (Java Database Connectivity) est la version 4. La version
définitive a été standardisée à la fin de l'année 2006. Elle a été développée par une communauté
regroupée au sein du JSR 221 (Java Specification Requests).
Ce travail a été dirigé par SUN MICROSYSTEM. Le groupe d'experts associé était composé de
représentants d'entreprises prestigieuses comme BEA Systems, IBM, MYSQL Inc., LLC Nokia
Corporation, Oracle, PointBase, SAP AG, Sybase, etc.
Les spécifications officielles de la dernière version de l'intergiciel JDBC version 4 précisent que
dorénavant le chargement du driver par la commande Class.forName(« nom du driver ») n'est plus
nécessaire. En voici un extrait.
The JDBC 4.0 API introduces new material and changes in the following areas:
■ Automatic loading of java.sql.Driver
DriverManager.getConnection has been modified to utilize the Java SE Service Provider
mechanism to automatically load JDBC Drivers. This removes the need to invoke Class.forName.
Ce texte est disponible en téléchargement au format PDF sous l'intitulé Final Release datée de
décembre 2006 à partir du site http://jcp.org. Plus loin dans le document, au chapitre 9, le
paragraphe 9.2.1 (Loading a driver that implements java.sql.Driver) précise les conditions que doit
remplir un driver JDBC v4 afin d'obtenir une connexion sans avoir à charger le driver. Voici le
paragraphe.
The DriverManager.getConnection method has been enhanced to support the
Java Standard Edition Service Provider mechanism. JDBC 4.0 Drivers must include the
file META-INF/services/java.sql.Driver. This file contains the name of the
JDBC driver’s implementation of java.sql.Driver.
Vous faites votre stage dans la société Open&Free Software. Un de vos collègue rencontre le
problème suivant. Après avoir téléchargé le driver JDBC41 pour la base de données PostgreSQL et
appliqué la règle ci-dessus il n'arrive pas à obtenir une connexion sur la base de données. Voici son
code :
String URL = "jdbc:postgresql://localhost/jdbc4";
String LOGIN = "postgres";
String PWD = "secret";
try {
Connection connexion = DriverManager.getConnection(URL, LOGIN, PWD);
} catch (SQLException e) { e.printStackTrace(); }
1 version postgresql-8,2-506.jdbc4.jar
JJLC
1/2
FC VELIZY
Vous même par acquis de conscience vous créez une base de données jdbc4 de test dans un nouveau
cluster PostgreSQL ayant pour nom clusterjdbc4, puis vous utilisez Eclipse et ouvrez un nouveau
projet pour tester le code ci-dessus.
Votre programme sort en exception, en effet la connexion ne se réalise pas. Pourtant votre code
JAVA est irréprochable. Vous décidez donc de vous pencher plus profondément sur le problème et
de le résoudre.
TRAVAIL
Après avoir créer le cluster et la base de données puis créer le projet sous Eclipse,
trouver la solution au problème et réaliser l'implémentation qui en découle.
Commandes nécessaires pour la solution :
jar -tvf fichier.jar
// pour lister le contenu d'une archive jar
jar -xvf fichier.jar
// pour extraire une archive jar
jar -cvf fichier.jar rep1 rep2 // pour construire une archive jar à partir des répertoires rep1 et rep2
vi /rep1/rep2/fichier
// pour créer un fichier et saisir un contenu
Nom du driver postgreSQL : org.postgresql.Driver
Commandes disponibles pour le DBA postgres :
initdb -D cluster
postmaster -i -D cluster
createdb base
JJLC
// création d'un cluster postgreSQL
// démarrage du cluster en mode client/serveur
// création d'une base de données
2/2
FC VELIZY
Téléchargement