Dans votre projet, créez un fichier SQL (clic droit sur le projet, new > SQL file).
Votre fichier SQL contiendra les requêtes de création des tables de la base de données :
CREATE TABLE Users(
login varchar2(10) PRIMARY KEY,
password varchar2(100) NOT NULL,
ville char(3) NOT NULL
);
INSERT INTO Users VALUES ('toto', 'toto', 'GRE');
INSERT INTO Users VALUES ('titi', 'titi', 'SMH');
Cette table contiendra les inscrits à la bibliothèque, en stockant leur ville de résidence sous forme d’un code de trois lettres comme celui utilisé dans le servlet de statistiques de la manip 5. Pour simplifier, on ne stocke pas les autres informations (mais vous pouvez le faire à titre d’exercice).
Pour exécuter ce fichier, choisissez la connexion à oracle1 dans « Connection » en haut de l’onglet d’édition, puis cliquez sur l’icône « Run SQL » qui se trouve juste à droite. Remarque : il se peut que lors du premier essai l’exécution échoue à cause d’un timeout car l’établissement initial de la connexion est long. Normalement au deuxième essai cela fonctionne sans erreur.
Le serveur tomcat permet de gérer un pool de connexions à la base de
données, et c’est ce qu’on utilisera ici. Pour le faire fonctionner,
le serveur a besoin du fichier contenant le pilote JDBC de la base de
données Oracle. Ce fichier se trouve sur les machines : il s’agit de
/opt/oracle/jdbc/lib/ojdbc7.jar
Pour que tomcat puisse l’utiliser, créez un lien dans
apache-tomcat-8.5.11/lib
vers ce fichier :
ln -s /opt/oracle/jdbc/lib/ojdbc7.jar ~/apache-tomcat-8.5.11/lib/
Redémarrez ensuite le serveur tomcat, sans quoi il ne prendra pas en compte
cet ajout.
Si vous souhaitez travailler sur une machine personnelle, vous
pouvez vous connecter à oracle1 à condition d’être sur le
VPN. Pour le fichier ojdbc7.jar
, vous pouvez récupérer celui de
l’école en scp :
scp votrelogin@pcserveur.ensimag.fr:/opt/oracle/jdbc/lib/ojdbc7.jar ./
par exemple.
Votre table Users est maintenant prête à être utilisée. Modifiez la méthode isLoginValid(username, password) que vous avez implémentée dans le cadre de la manip 7, en vue de vérifier si l’utilisateur existe bien dans la table Users et si son mot de passe est correct.
On utilisera le pool de connexions intégré au serveur tomcat.
Pour que tomcat initialise ce pool au déploiement de l’application, il
faut ajouter un élément Resource
à l’élément racine
Context
du fichier context.xml
de votre
projet (il est dans le répertoire META-INF
). Le fichier complet devra ressembler à ceci :
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/Bibliotheque">
<Resource
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@oracle1.ensimag.fr:1521:oracle1"
maxTotal="2"
maxIdle="1"
maxWaitMillis="20000"
name="jdbc/bibliotheque"
password="XXXX"
username="XXXX"
/>
</Context>
N’oubliez pas de renseigner vos propres password et username. Attention si vous éditez un fichier qui a été généré automatiquement : la balise ouvrante ne doit pas se terminer par />
, sinon cela désigne en fait un élément vide et vous aurez une erreur de syntaxe XML lors du déploiement).
Modifiez maintenant votre servlet AddCustomer
créé lors de la
manip 5 de sorte que celui-ci insère dans la table une
ligne correspondant au nouvel utilisateur.