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 -