par
Alexis Bonis
Xavier Galbois
Laure Grillo
Mohammed Hajim
|
|
|
1. Déscription du projet |
|
Ce projet s'inscrit dans le cadre de notre DESS Télécommunications
et Réseaux pour certains et DESS ISI. Le module concerné est :
Composants d'entreprise et serveurs d'applications
pour l'année scolaire 2003-2004.
|
Il s'agissait de faire un jukebox mp3 en ligne
avec une architecture 3-tiers : des servlets jsp pour afficher les mp3,
des EJBs pour la gestion des utilisateurs (playlist) et la gestion de
la base de données.
La base de données contient les chemins vers les mp3 ainsi que les
utilisateurs, les albums, les artistes, les morceaux et leur statistiques (nombre de fois qu'ils ont été écoutés),
les playlists.
L'administrateur doit pouvoir lancer un scanne sur le mp3 qui met à jour
la base de données.
|
|
|
|
2. Quelques images... |
|
Affichage des albums par lettre

|
Affichage des morceaux pour un album

|
Affichage des albums dont le titre commence par ... (Recherche)

|
|
|
|
3. Architecture de l'application |
|
Schéma architecture 3-tiers :
|

|
Schéma des EJBs :
|

|

|
Justification des choix :
- Entity Bean CMP (Container-managed) :
Permet de ne pas avoir à coder la plus part des requêtes SQL par
rapport aux BMP. Nous avons choisit d'avoir des entity bean qui
contiennent en attribut les collections et objets afin d'y acceder
directement plutot que de passer par des méthodes qui ferait des
requêtes SQL.
- Session Bean Stateful :
Permet de faire une gestion des utilisateurs.
- Scanne hors EJB :
Les clés primaires des tables en base de données sont auto-incrémentées.
Malheureusement, JBuilder avec JBoss gère difficilement la création d'objet dont
la clé primaire n'est pas passée en paramètre à la methode ejbCreate. Il semblerait
que ce soit malgré tout possible (installation difficile).
|
|
|
|
4. Outils utilisés |
|
Base de données :
- MySQL 4.0.15
- phpMyAdmin 2.5.6
|
EJB :
- JBoss 3.2.3 avec Tomcat 4.1
- JBuilder pour le developpement et le deploiement
|
|
|
|
5. Problèmes rencontrés |
|
- Configuration de MySql avec JBoss et JBuilder :
Il fallait ajouter le driver de MySql dans jboss, et dans Jbuilder comme bibliotheques.
L'ajout de librairies dans JBuilder ne fonctionne pas toujours : création à la main du .config
et .library pour que qu'elle soit disponible.
Il fallait également indiquer à JBuilder le mapping avec MySql.
Avec la dernière version de JBoss et JBuilder, le nom du mapping doit être précédé de "java:/"
- Requete EJB-QL, clause LIKE :
Pour éffectuer des recherches sur les titres "commençant par ...", il est impossible
d'utiliser la clause LIKE car elle ne peut utiliser que des constantes.
- ID 3 tags :
Avec un échantillon de 5000 mp3, beaucoup de morceaux n'ont pas leur tags renseignés.
Ainsi, le serveur est grandement surchargé :) lorsque l'on désire voir les albums
commençant par la lettre U (pour "Unknow").
|
|
|
|
6. Installer FSzik ! |
|
- Installer JBoss 3.2.3
- Installer MySql 4.0.15, créer les tables avec le fichier FSzikBD.sql.gz
- Configurer JBoss :
- ajouter le driver mySql
mysql-connector-java-3.0.11-stable-bin.jar dans <racine-JBoss>/server/default/lib
- copier le fichier <racine-JBoss>/docs/examples/jca/mysql-service.xml dans
<racine-JBoss>/server/default/deploy/
[ le nom du datasource est java:/MySqlDS ]
[ le nom du mapping est mySQL, le mapping avec mySql est présent par défaut dans JBoss.. rien à faire ! ]
- deployer notre projet en copiant ce fichier FSzikApplication.ear
dans <racine-JBoss>/server/default/deploy/
- Il n'y a plus qu'à lancer JBoss, et aller voir sur http://votreserveur:8080/WebFSzik/
|
|
|
|
7. Télécharger ! |
|
L'archive suivante contient les sources du projet avec les fichiers
nécessaires à JBuilder pour ouvrir le projet. Elle contient egalement les
librairies nécessaires dans le répertoire lib à la racine de l'arcive.
Version du 26/03/2004
FSzik.tar.gz
|
|
|
|
8. Evolutions possibles... |
|
- PlayList :
Actuellement un utilisateur peut s'identifier, mais il ne peut pas
créer ses playlists, et donc les charger, changer l'ordre des morceaux...
- Streaming audio synchronisé pour N clients :
Le principe serait d'avoir N clients en différents lieux, qui puissent
écouter la même musique au même instant.
|
|
|
|