Logo
par Alexis Bonis  Xavier Galbois  Laure Grillo  Mohammed Hajim

1. Déscription du projet
2. Quelques images...
3. Architecture de l'application
4. Outils utilisés
5. Problèmes rencontrés
6. Installer FSzik !
7. Télécharger !
8. Evolutions possibles...

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 !

  1. Installer JBoss 3.2.3
  2. Installer MySql 4.0.15, créer les tables avec le fichier FSzikBD.sql.gz
  3. 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/
  4. 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.