Skip to content
Snippets Groups Projects
Select Git revision
  • master
1 result

projet-train

  • Clone with SSH
  • Clone with HTTPS
  • Forked from Maxime BURON / projet-train
    Up to date with the upstream repository.

    Projet : Train

    Prise en main

    Forker le dépôt depuis Gitlab

    En vous connectant sur gitlab.isima.fr, vous pouvez utiliser le bouton “Fork” du projet pour en faire une copie sur votre compte et ainsi faire des push dessus.

    Configurer votre espace de travail

    Il vous faut outil de développement en Java, mais surtout l’accès à un serveur postgresql. Deux choix s’offrent à vous :

    1. programmer et installer posgresql sur votre machine personnelle
    2. programmer et installer postgresql sur votre machine virtuelle (celle nommée vm-etu-votre_login.local.isima.fr)

    Configuration de Postgresql

    Pour développer, il faudra ouvrir une connection avec un serveur postgres, qui sera installé sur votre machine virtuelle étudiante (celle nommée vm-etu-votre_login.local.isima.fr).

    Installation de postgresql

    sudo apt install postgresql
    

    Vérifier que les connexions TCP/IP avec mot de passe sont permises

    L’API JDBC (Java Database Connectivity) est un outil incontournable pour interagir avec un SGDB depuis Java. Cette API ouvre une connection avec le serveur postgres via le protocole TCP/IP sur le port par défaut 5432. Pour des raisons de sécurité de telles connexions ne sont pas toujours possible par défaut. On souhaite se connecter avec un utilisateur et un mot de passe (que l’on va créer juste après) en utilisant soit la méthode d’authentification md5 ou scram-sha-256.

    Éditer le fichier de configuration pg_hda.conf (sur Debian dans le dossier /etc/postgresql/<version>/main, existe aussi sous Windows : C:\Program Files\PostgreSQL\<version>\data\postgresql.conf) et modifier deux lignes de la manière suivante en vérifiant que la dernière colonne a pour valeur md5 ou scram-sha-256 :

    # IPv4 local connections:
    host    all             all             127.0.0.1/32            scram-sha-256
    # IPv6 local connections:
    host    all             all             ::1/128                 scram-sha-256
    

    En cas d’erreurs répétées, vous pouvez accepter toutes les connexions sans vérifier le mot de passe en remplaçant scram-sha-256 par trust.

    Redémarrer le serveur Postgres après chaque modification de fichier de configuration avec :

    sudo systemctl restart postgresql
    

    Plus d’information ici :

    Configurer votre utilisateur et votre base de données

    Connectez vous au serveur postgres via le client psql:

    sudo -u postgres psql
    

    Créer votre utilisateur nom_d_utilisateur avec un utilisateur de votre choix avec le mot de passe de votre choix:

    CREATE USER nom_d_utilisateur WITH PASSWORD 'un mot de passe simple';
    

    Créer la base de donnée que vous allez utiliser durant le projet :

    CREATE DATABASE train;
    

    Déclarer votre utilisateur comme propriétaire de la base :

    ALTER DATABASE train OWNER TO nom_d_utilisateur;
    

    Accorder tous les droits à votre utilisateur sur cette base :

    GRANT ALL PRIVILEGES ON DATABASE train TO nom_d_utilisateur;
    

    Quitter le client psql avec la commande \q. Et déconnectez vous du login postgres depuis bash.

    Tester la connexion à votre base de données avec votre nouvel utilisateur via TCP/IP:

    psql -U nom_d_utilisateur -h localhost -d train -W
    

    Commandes utiles dans le client psql

    Contrairement au client Oracle, l’auto commit est activé dans psql, ce qui signifie que :

    • les transactions doivent explicitement débuter par le mot-clé BEGIN
    • les requêtes en dehors de transaction sont automatiquement validé à la fin de l’exécution, s’il n’y pas d’erreur.
    • \q quitter
    • \dt lister les tables de la base de données courante
    • \c autre_base se connecter à une autre base de données

    Connexion à la VM via RDP

    1. lancer Remmina depuis la machine locale
    2. créer un nouveau profil de connexion
    3. modifier le champ serveur avec “vm-etu-login.local.isima.fr”
    4. modifier le champ Nom d’utilisateur avec “login”
    5. cliquer sur enregistrer et se connecter

    Coder depuis une machine locale sans Postgres (ne fonctionne pas en salle info)

    Il se peut que vous constatiez des difficultés pour coder depuis votre machine virtuelle. Il serait préférable de coder depuis la machine locale et de tester avec le navigateur Web de la machine locale. Cela est possible grâce à SSH en transférant la connexion TCP/IP sur le port 5432 de la machine locale au serveur Postgres sur la machine virtuelle :

    ssh -L 5432:localhost:5432 login@vm-etu-login.local.isima.fr
    

    Sources

    • https://www.bigbinary.com/blog/configure-postgresql-to-allow-remote-connection
    • https://www.ibm.com/docs/fr/urbancode-deploy/6.2.2?topic=configuration-configuring-postgresql-database-blueprint-design-server

    Première exécution

    ConnectionPool

    Avant de lancer le code pour la première fois, il faut configurer l’accès à la base de données. Aller dans la classe “com.uca.dao.ConnectionPool” et modifier les valeurs suivantes :

    • URL devient “jdbc:postgresql://localhost/train”
    • USER devient “nom_d_utilisateur”
    • PASSWORD devient “votre_mot_de_passe”

    La classe ConnectionPool gère les différentes connections ouvertes par le serveur Java. Un objet Connection en java correspond à une session, où plusieurs transactions successives peuvent être créées. Quand on souhaite créer une transaction depuis Java, on demande une connection à ConnectionPool via la méthode getConnection et une fois la transaction finie, il faut la rendre à ConnectionPool via releaseConnection.

    Remarque: Vous devez toujours interagir avec la base de données en créant des transactions. Pour cela, vous devez utiliser les méthodes setAutoCommit, commit et rollback de l’objet Connection. N’oubliez pas non plus de choisir un niveau d’isolation des transactions avec la méthode setTransactionIsolation.

    Exécution

    Lancer une première fois le serveur Java avec la commande (à redémarrer après chaque modification du code) :

    ./gradlew run
    

    Rendez-vous sur http://localhost:8081/