Ce projet implémente une plateforme de services dynamiques inspirée d'OSGi, permettant à des programmeurs de fournir des services et à des amateurs de les utiliser.
Ce projet fonctionne sur Windows, Linux et macOS. Des scripts sont fournis pour chaque système d'exploitation :
- Windows : fichiers
.bat - Linux / macOS : fichiers
.sh
-
BRiLaunchServer : Serveur principal qui gère les connexions
- Port 8888 : Pour les programmeurs
- Port 8889 : Pour les amateurs
- Télécharge les classes de services depuis le serveur FTP du programmeur
- Fallback automatique sur classpath local si le téléchargement échoue
-
ClientProg : Client pour les programmeurs
-
ClientAma : Client pour les amateurs
-
BRiService : Interface que tous les services doivent implémenter
-
ServiceLoader : Utilitaire pour télécharger et charger dynamiquement les classes de services
compile.bat# Première fois seulement : rendre les scripts exécutables
chmod +x *.sh
# ou utiliser le script helper
chmod +x make-executable.sh
./make-executable.sh
# Compiler
./compile.shjavac -d bin -sourcepath src src/brilaunch/*.java src/services/*.javaWindows:
run-server.batLinux / Mac:
chmod +x run-server.sh
./run-server.shManuellement:
java -cp bin brilaunch.ServerLauncherWindows:
run-client-prog.batLinux / Mac:
chmod +x run-client-prog.sh
./run-client-prog.shManuellement:
java -cp bin brilaunch.ClientProgComptes de test disponibles :
- Login:
exemple/ Password:password123 - Login:
test/ Password:test123 - Login:
services/ Password:services123
Actions disponibles :
- Fournir un nouveau service
- Entrer le nom complet de la classe (ex:
services.InversionService) - Le serveur télécharge automatiquement la classe depuis votre serveur FTP
- Si le téléchargement échoue, utilisation automatique du classpath local
- Entrer le nom complet de la classe (ex:
- Mettre à jour un service
- Changer l'adresse FTP
- Quitter (choisir option 4)
Téléchargement FTP :
- Le serveur construit l'URL comme suit :
{votre_ftp_url}/{package}/{classe}.class - Exemple : Pour
services.InversionServiceavec FTPhttp://exemple.com, l'URL serahttp://exemple.com/services/InversionService.class - Protocoles supportés : HTTP, HTTPS, file://
- Fallback automatique : Si le téléchargement échoue, le serveur utilise le classpath local
Windows:
run-client-ama.batLinux / Mac:
chmod +x run-client-ama.sh
./run-client-ama.shManuellement:
java -cp bin brilaunch.ClientAmaChoisir un service dans la liste et entrer les données d'entrée. Pour quitter, choisir l'option 0 dans le menu.
Pour arrêter le serveur proprement :
- Appuyer sur Ctrl+C dans le terminal du serveur
- Ou taper
quitouexitdans le terminal du serveur
Quatre services d'exemple sont fournis dans le package services :
-
InversionService : Inverse un texte
- Entrée : "non ? si !"
- Sortie : "! is ? non"
-
AnalyseFichierXMLService : Analyse un fichier XML et envoie un rapport par email
- Entrée :
ftp://url_du_fichier|email@destinataire.comoufile://chemin/local|email@destinataire.com - Sortie : Confirmation avec rapport d'analyse
- Note : Le téléchargement FTP et l'envoi d'email sont simulés dans cette version
- Entrée :
-
MessagerieInterneService : Service de messagerie interne avec ressource partagée
- Envoi :
ENVOI:pseudo_destinataire:message - Lecture :
LECTURE:pseudo_expediteur - Les messages sont stockés dans une ressource partagée (persistants en mémoire)
- Envoi :
brilaunch: Code du serveur et des clientsservices: Services d'exemple (doivent être dans un package correspondant au login du programmeur)
- Les services doivent être dans un package correspondant au login du programmeur
- Les services doivent implémenter l'interface
BRiService - Le serveur télécharge automatiquement les classes depuis le serveur FTP du programmeur
- Protocoles supportés pour le téléchargement : HTTP, HTTPS, file://
- Si le téléchargement échoue, le serveur utilise automatiquement le classpath local (fallback)
- Le serveur doit être démarré avant les clients
-
Démarrer le serveur :
run-server.bat -
Créer un compte programmeur : Lancer
run-client-prog.bat- Choisir option 2 (Créer un nouveau compte)
- Login:
exemple - Password:
password123 - FTP:
ftp://exemple.com
-
Installer un service : Dans le client programmeur
- Choisir option 1 (Fournir un nouveau service)
- Entrer:
services.InversionService
-
Utiliser le service : Lancer
run-client-ama.bat- Choisir le service "Inversion de texte"
- Entrer:
non ? si ! - Résultat:
! is ? non
Service d'analyse XML :
- Installer :
services.AnalyseFichierXMLService(avec compteservices) - Utiliser :
file://test.xml|user@example.com - Résultat : Rapport d'analyse affiché et "envoyé" par email (simulé)
Service de messagerie :
- Installer :
services.MessagerieInterneService(avec compteservices) - Envoyer un message :
ENVOI:alice:Bonjour ! - Lire les messages :
LECTURE:alice
src/
├── brilaunch/
│ ├── BRiService.java # Interface que tous les services doivent implémenter
│ ├── BRiLaunchServer.java # Serveur principal
│ ├── ClientProg.java # Client programmeur
│ ├── ClientAma.java # Client amateur
│ ├── Programmer.java # Classe représentant un programmeur
│ ├── ServiceInfo.java # Informations sur un service installé
│ ├── ServiceLoader.java # Utilitaire pour télécharger les classes depuis FTP
│ └── ServerLauncher.java # Lanceur avec comptes de test
└── services/
├── InversionService.java # Service d'exemple : inversion de texte
├── AnalyseFichierXMLService.java # Service avec échange de fichiers : analyse XML
└── MessagerieInterneService.java # Service avec ressource partagée : messagerie
- ✅ Téléchargement des classes de services depuis le serveur FTP du programmeur
- ✅ Support des protocoles HTTP, HTTPS et file://
- ✅ Fallback automatique sur classpath local si le téléchargement échoue
- ✅ Validation des noms de services (non null, non vide)
- ✅ Gestion du changement de nom lors de la mise à jour d'un service
- ✅ Nettoyage automatique des fichiers temporaires au shutdown
- Support FTP réel complet (nécessiterait Apache Commons Net)
- Implémentation réelle de l'envoi d'email avec JavaMail API (actuellement simulé)
- Gestion des services .jar
- Persistance des messages de la messagerie (fichier ou base de données)
- Authentification des amateurs pour certains services
- Persistance des données (programmeurs et services)
- Interface graphique pour les clients