Rapport projet Option Java - Page personnel de Sylvain Archenault

Abi Chahine Carlo GM 4
Archenault Sylvain 2006
Houpert Yves
Wang Martine
Rapport projet Option Java
Pour l'option Java, nous avons choisi de développer un système de messagerie
instantanée. Ce projet avait pour but de nous faire découvrir les composants Entreprise de
Java, la communication réseau, programmation multithreadée, traitement du XML.
1. Communication réseau
Avant d'aborder les communications réseaux, nous devons présenter l'architecture
que nous avons choisie. Il y a tout d'abord un serveur central qui sera en charge de gérer
la connexion des clients, et de relayer les messages d'un client à un autre. Afin de réaliser
ces différentes tâches, il se servira d'une base de données auquelle il aura accès grâce à
un Entreprise Java Bean (EJB).
Pour faire communiquer les programmes clients avec le serveur, nous avons choisi
d'utiliser une communication Socket. Cela a pour avantage de pouvoir communiquer
facilement avec des programmes écrit dans d'autres langages. Nous avons en effet
développer un client C++. L'utilisation de RMI aurait été plus difficile, voir impossible.
Il est également intéressant de noter que nous n'avons pas utilisé les classes
- 1 -
Illustration 1: Architecture Bamboo Ch@t
Socket et ServerSocket classiques (celles issues du package java.net), mais les classes
SocketChannel et ServerSocketChannel du paquet java.nio1 introduit dans la version 1.4
de Java. Celles-ci se révèlent beaucoup plus efficaces. En effet, avant les méthode de la
classe Socket pour lire était bloquante. Ceci a pour conséquence d'attribuer un thread à
chaque connexion ouverte, cela peut-être donc problématique dans le cas d'un serveur
très chargé. Les nouvelles classes offertes par java.nio permettent d'éviter ce problème en
fournissant des méthode non bloquantes. Nous nous sommes référer au livre d'O'Reilly :
« Java NIO »2 ainsi qu'un article publié par Giuseppe Naccarato sur
http://www.onjava.com3
2. Entreprise Java Bean
Au début, nous souhaitions beaucoup utilisé les EJB pour communiquer entre les
clients et le serveur. Cependant, lors de l'étude de faisabilité, nous nous sommes rendu
compte qu'il serait dangereux d'utiliser uniquement les EJB. En effet, ils nous sont apparus
assez complexes à utiliser et nous n'étions pas sûr de pouvoir réaliser toutes les travaux
nécessaires à l'application grâce au bean. De plus, l'utilisation des beans rendait
beaucoup plus difficile l'utilisation de clients développés dans d'autres langages que Java.
Mais comme nous accordions beaucoup d'importance à utiliser ce composant très
puissant, nous avons décidé de le limiter à la communication avec la base de données.
Ainsi, nous avons réduit l'impact du bean sur le développement du projet, évitant ainsi de
mauvaises surprises, tout en l'incluant dans le projet ce qui nous a permis d'appréhender
son développement.
Un EJB permettant l'inscription des utilisateurs à également été crée. Celui-ci est
accessible via une interface web. Il est couplé à des pages JSP.
3. Thread pool
Afin que le serveur puisse être performant, nous avons choisi d'utiliser un « design
pattern » assez répandu, le thread pool. Le thread pool consiste en une collection de
threads (la taille est fixé au début) qui traite les requêtes des clients. Ce design a pour
avantage de permettre un parallélisme du traitement des messages, tout en évitant un
débordement de capacité lors d'une charge importante du serveur.
4. Traitement XML
Afin de faire communiquer les différents programmes, nous avons dû définir un
protocole. Nous avons choisi d'utiliser au maximum la conception objet. Nous avons
décidé de créer pour chaque message un objet. Cet objet doit donc transiter par le réseau.
Comme nous avons décidé de ne pas utiliser RMI ou Corba, nous avons donc défini une
méthode pour faire transiter ces objets par le réseau. Ce processus s'appelle le
« marshalling ». Avant d'envoyer un message sur le réseau nous le transformons en XML.
Lors de la réception du message XML, nous recréons l'objet.
1http://java.sun.com/j2se/1.4.2/docs/guide/nio/
2http://javanio.info/
3http://www.onjava.com/pub/a/onjava/2002/09/04/nio.html
- 2 -
La transformation Objet XML est plutôt facile. Au contraire, la transformation est
plus difficile. Nous avons choisi d'utiliser la librairie xerces4 et un parseur SAX qui a pour
intérêt d'être rapide et léger. L'autre choix possible était un parseur DOM, cependant celui-
ci est plut lourd et ne s'adaptait pas bien à notre cas.
5. Divers
Un point intéressant que nous avons également abordé est l'internationalisation du
programme. Cela consiste à proposer le programme en plusieurs langues suivant
l'environnement sur lequel celui-ci est exécuté. Nous avons seulement internationalisé le
programme serveur en français et anglais. La langue à utiliser est également paramétrable
par une option dans la ligne de commande.
Ce projet fût très enrichissant à réaliser, nous avons abordé des notions
importantes dans la programmation moderne (réseau, thread, bean, xml, ...).
4http://xerces.apache.org
- 3 -
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !