Le projet reposait sur la création
d'un serveur de bandeaux publicitaires, il fallait réaliser un programme
capable de servir sur certains critères des images.
Les
critères retenus ici sont assez simples, par exemple, on pourra
choisir de servir certains bandeaux aux personnes entrant dans la categorie
'jeunes 15-25 ans'.
Bien sur, on voudrait aussi pouvoir se
rendre a une URL donnee en cliquant sur l'image.
Nous avons axé notre travail sur
la création d'un serveur permettant une administration distante
des bandeaux, ainsi qu'une inscription elle aussi distante.
Choix
du langage JAVA
Avant de commencer a concevoir ce projet,
il a fallu choisir un langage de programmation. JAVA s'est assez naturellement
imposé car il facilite grandement le maniement d''objets reseaux'
tels que les sockets ou les URLs.
De plus, le fait de developper des applets
pour l'utilisateur final, garantissait une interface relativement conviviale
et tournant sur plusieurs plateformes.
Le projet a ete développé
en utilisant le JDK 1.1.5, certes non compatible avec les anciens
browsers, mais déjà supporté sur Internet Explorer
4 par exemple.
Pour plus de lisibilité et une conception
plus aisée, ce projet a été développé
sous forme de packages JAVA, ce qui permet un relatif cloisonnement des
fonctionnalités.
Le package general englobant les autres
s'appelle olas .
Il est composé des sous-packages
suivants :
Ce serveur est le serveur de base, c'est
autour de lui que vient s'articuler toute l'application.
La tache de ce serveur est double.
La premiere tache du serveur HTTP est de
servir les page HTML servant , d'une part a administrer le service et d'autre
part , du côté client a inserer et a supprimer des bandeaux.
On peut distinguer ici 2 sortes de pages
servies:
Ce serveur recoit et traite les donnees
en provenance du client voulant inscrire ou retirer son bandeau.
Le serveur client 'tourne' sur la meme
machine que le serveur HTTP, une applet presente sur une page HTML délivrée
par le serveur HTTP peut alors ouvrir une socket de communication
avec le serveur client.
Les applets qui vont utiliser ce serveur
sont l'applet d'inscription d'un bandeau (FormApplet) et l'applet
de retrait d'un bandeau (RemoveFormApplet).
Le formulaire contient le champ 'URL
of the picture' et le champ 'URL to link to the picture'. Le
premier champ correspond à l'image du bandeau, le second à
la 'location' où il faudra se rendre suite a un click
sur ce bandeau.
Lors de la reception par le serveur client
d'un formulaire dument rempli, il procède à une vérification
de l'URL. Si celle-ci est valide, il charge l'image dynamiquement (en mémoire)
et en informe l'utilisateur du formulaire. Sinon, il renvoit un message
d'erreur dans l'applet en demandant de corriger l'URL non valide.
Si l'enregistrement s'est bien passé,
on délivre à l'utilisateur un Identifiant unique
qui lui servira à consulter les statistiques et aussi , eventuellement
à retirer son bandeau du serveur.
Il faut distinguer les bases de données
permanentes (stockées sur le disque) et les bases de données
dynamiques (gérées em mémoire). Les bases de données
permanentes sont chargées à chaque démarrage du serveur.
Elles sont au nombre de 3 :
Elle permet de savoir quelle page servir lors de l'appui sur un bandeau.En effet, lorsque quelqu'un clique sur un des bandeaux publicitaires, il doit être redirigé vers le site de l'entreprise que la publicité représente. Le lien URL spécifié plus haut est statique, en effet, il est ecit par quelqu'un une fois pour toute et ne bouge plus. Le problême est que lors d'un click souris sur le bandeaux, il va falloir que l'on redirige la requête vers la page de l'entreprise sans connaitre le bandeau sur lequel le click a lieu. Ce problême a été resolu par la création et le maintien d'une table dynamique permettant d'identifier quelqu'un qui demande un bandeau (par un cookie ou par le referer) et de pouvoir lui rendre la bonne 'location' d'URL au cas où il click sur l'image ( comparaison des cookies ou du referer ou encore de l'adresse IP de la demande de bandeau et de la demande de redirection vers le site de la société ).
Bien sûr ce projet a été réalisé dans un trés bref laps de temps, il manque donc certaines fonctionnalités qu'il aurait pu être interressant de rajouter :
Nous arrivons à une partie un petit peu plus technique, c'est à dire l'installation et le lancement du serveur. L'installation et le lancement s'appuient sur des scripts 'shell' facilitant la tâche pour les utilisateurs Unix. Si vous voulez commencer plus rapidement, aprés avoir décompressé l'archive, il vous suffit de taper :
La procedure d'installation est decrite dans le fichier
Pour lancer le serveur ,le script est le suivant 'start_server.zsh'. Il prend en paramètres :
un exemple d'execution pourrait donc être :
Ce projet nous a permit d'utiliser JAVA
pour réaliser une application internet plutôt d'actualité.
Bien sûr, un de nos plus gros regret sera de ne pas avoir eu le temps
de pousser l'implémentation du serveur jusqu'au bout et de n'avoir
pas traité les points abordés dans le paragraphe 'Les
limites de OLAS'.
Malgré tout, cela nous a permit
de réaliser la difficulté d'interropérer dans l'internet,
en effet, par exemple, les 'browsers' ne retournent pas tous les mêmes
informations, il faut s'adapter en fonction du client...
Enfin, nous avons pu, un peu plus approfondir
notre connaissance de JAVA dans le domaine des réseaux.
Vous pouvez récupérer les
sources du projet, ainsi que les classes java en cliquant sur la réference
ci dessous.
Essayez
notre projet en ligne...
Attention! comme nous l'avons précisé
dans le paragraphe 'Choix du langage',
cette démonstration ne pourra
fonctionner que sur un browser supportant
JAVA 1.1.5. Nous vous conseillons d'utiliser 'Internet Explorer'
de Microsoft par exemple.
D'autre part, le serveur que nous allons
lancer est interne à l'école car nous n'avons pas accés
vers l'exterieur. Donc vous ne pourrez pas y accéder si vous essayer
de l'exterieur de l'ecole.
Si vous essayer d'y accéder depuis
l'interieur, il reste à esperer que personne n'ai rebooté
la machine sur laquelle il est lancé... (nessie en utilisant
le port 12345 )
En cas de problèmes, n'hesitez
pas à nous contacter...