Ce projet a pour but de développer une application distribuée en Java RMI (Remote Method Invocation) connectée à une base de données MySQL, permettant de gérer les livres, usagers et emprunts d'une bibliothèque.
L’application repose sur une architecture client–serveur :
- Serveur RMI : héberge les objets distants et gère la connexion à la base MySQL.
- Client (Swing) : interface graphique permettant d’ajouter, rechercher, emprunter et rendre les livres.
- Base de données MySQL : assure la persistance des données.
ClientGUI <--> Serveur RMI <--> Base MySQL (biblio_rmi)
tp4-rmi/
├── bibliothèque/ # Classes métiers (Livre, Usager)
├── interfaces/ # Interface distante RMI (BibliothequeInterface)
├── server/
│ ├── db/ # Connexion MySQL (DB.java)
│ ├── dao/ # Classes DAO (LivreDAO, UsagerDAO, EmpruntDAO)
│ └── BibliothequeImpl # Implémentation RMI
└── client/
└── ClientGUI.java # Interface graphique Swing
- Créer une base de données :
CREATE DATABASE biblio_rmi CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;- Créer l’utilisateur :
CREATE USER 'biblio_user'@'localhost' IDENTIFIED BY 'biblio_pass';
GRANT ALL PRIVILEGES ON biblio_rmi.* TO 'biblio_user'@'localhost';
FLUSH PRIVILEGES;- Créer les tables :
CREATE TABLE livres (
isbn VARCHAR(32) PRIMARY KEY,
titre VARCHAR(255) NOT NULL,
auteur VARCHAR(255),
editeur VARCHAR(255),
disponible TINYINT(1) DEFAULT 1
);
CREATE TABLE usagers (
nom VARCHAR(128) PRIMARY KEY,
categorie VARCHAR(64),
adresse VARCHAR(255),
ban_until DATE NULL
);
CREATE TABLE emprunts (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
isbn VARCHAR(32) NOT NULL,
nom_usager VARCHAR(128) NOT NULL,
date_emprunt DATE NOT NULL,
date_echeance DATE NOT NULL,
date_retour DATE,
prolongations INT DEFAULT 0,
FOREIGN KEY (isbn) REFERENCES livres(isbn),
FOREIGN KEY (nom_usager) REFERENCES usagers(nom)
);cd server
java server.ServerMainLe serveur démarre et se lie au registre RMI sur le port 1099.
cd client
java client.ClientGUI| Fonctionnalité | Résultat |
|---|---|
| Ajout de livre | ✅ Livre ajouté et visible en base |
| Ajout d’usager | ✅ Usager ajouté et consultable |
| Recherche | ✅ Multi-critères (titre, auteur, etc.) |
| Emprunt | ✅ Livre marqué non disponible |
| Prolongation | ✅ Date prolongée avec succès |
| Retour | ✅ Livre redevenu disponible |
- Java 21
- Java RMI
- Swing (GUI)
- MySQL 8.0
- Maven
- IntelliJ IDEA 2025
Chayma Chliyah
chaymachliyah809@gmail.com
Ce projet illustre la mise en œuvre d’une architecture distribuée complète en Java RMI, intégrée à une base de données MySQL, avec une interface graphique conviviale.
Il met en avant les notions d’objets distants, d’appels réseau et de persistance des données, tout en simulant un cas d’usage réel de gestion de bibliothèque.