63
1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique depuis 1996 Je travaille à Cap Gemini Bayonne depuis 2000 Spécialités : Java, C++, javascript UML Architecture Web Depuis Janvier 2012 : 2j / 5 à l’UFR.

1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

Embed Size (px)

Citation preview

Page 1: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

1Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Présentation

●Stéphane TALLARD●Ingénieur en Informatique depuis 1996●Je travaille à Cap Gemini Bayonne depuis 2000●Spécialités :–Java, C++, javascript–UML–Architecture Web –Depuis Janvier 2012 : 2j / 5 à l’UFR.

Page 2: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

2Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Systèmes d'information pour l'entreprise

Pourquoi ce cours ?–Montrer comment les architectures réseaux ont évolué pour faire face aux besoins des entreprises

–Présentation des architectures basées sur Java

–Etre capable d'être un interlocuteur pour un prestataire de service en informatique

Préréquesites: Connaissance du langage Java

La Première partie se fait dans le module « Système d'information pour l'entreprise » .

La seconde partie se fait dans le module « Intégration des données dans les Système d'information » .

Page 3: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

3Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Mainframes : Systèmes centralisés● Le système héberge une ou plusieurs applications

● Les applications accèdent à un système de gestion de base de données

● Des terminaux permettent d'utiliser ces applications

● Le système central réalise l'ensemble des traitements

● Les terminaux sont passifs : ils se cantonnent à faire des requêtes et à afficher les données

Page 4: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

4Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Mainframes : Systèmes centralisés

● Avantages–Bien adaptés lorsqu'on a des gros traitements sans intervention humaine (batch)●Les seuls utilisateurs sont les administrateurs●Le système est pris pour sa plus grande partie aux tâches de traitement

–Centralisation : l'administration est facilitée

Page 5: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

5Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Mainframes : Systèmes centralisés

● Inconvénients:–Gérer la centralisation d’un tel système avec les problèmes généraux qui y sont liés.

–Non robustesse en cas de panne

–Problèmes de congestion en entrée du serveur lors de l’arrivée massive de requêtes (congestion de communication)

–Congestion de traitement car le système central est chargé non seulement de l’administration des données mais aussi de tout le reste de l’application, entre autres, de la partie interface utilisateur.

–Fonctionnalités limitées : les données restent sur le système central. Un individu ne peut pas les retraiter pour des présentations, des calcus statistiques ...

Page 6: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

6Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Technologie client – serveur et les serveurs de bases de données

● Le système central ne s'occupe plus que de l'administration des données et du traitement des requêtes SQL

●Le poste client prend en charge :

– L'envoi de requêtes SQL vers le serveur.

– La présentation des données.

Page 7: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

7Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Technologie client – serveur et les serveurs de bases de données

● Avantages :–Bien adaptés à l'évolution de la micro informatique : les utilisateurs peuvent récupérer les données issues du serveur de base de données pour réaliser des traitements à façon (présentation, calculs statistiques)–Logiciels graphiques plus conviviaux–Gestion centralisée des données (vues comme le coeur de l'entreprise)

Page 8: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

8Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Technologie client – serveur et les serveurs de bases de données

● Inconvénients–Administration des postes clients●Héterogéinité des matériels et des logiciels●Mise à jour logicielle : comment faire quand on a un grand nombre postes ?

–Performance●Pour réaliser un « vrai » traitement il faut multiplier les requêtes et les aller-retours entre le client et le serveur : le réseau est fortement sollicité●Problèmes d'engorgement du serveur à des périodes de pointe ...

Page 9: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

9Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Qu'avez vous retenu sur ...

● les systèmes mainframe ?–Comment les traitements sont répartis ?–Quelles problèmes pouvaient survenir ?

Page 10: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

10Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Qu'avez vous retenu sur ...

●Les architectures client-serveur–Comment les traitements sont répartis ?–Quels problèmes pouvaient survenir ?

Page 11: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

11Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Equilibre de la charge

● Pour remédier au probléme d'étranglement du serveur lors des pics de charge, on utilise des système d'équilibre de charge● Architecture :

Il y plusieurs serveurs Le système d'équilibre de charge :

reçoit les requêtesLes redirige vers la machine la moins

chargée

Page 12: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

12Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Equilibre de la charge

●La machine qui se charge d'équilibrer la charge doit être capable de choisir la machine qui va offrir la meilleure performance● Si une machine tombe en panne, les performances globales seront moins bonnes mais les services seront toujours assurés

Page 13: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

13Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Notion de transaction● Une transaction est une une suite d'actions sur système

● Pour qu'une système soit fiable, ses transactions doivent avoir certaines propriétés

– Atomicité : soit la transaction réussit complètement, soit elle échoue complétement : elle ne modifie l'état du système

–Cohérente: le système passe d’un état cohérent à un autre.

–Isolées : Aucune modification n’est visible sur la base tant que toutes les opérations n’ont pas été réalisées et validées.

–Durables : Les transactions validées sont conservées même si le système tombe en panne.

Page 14: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

14Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Notion de transaction

●Pour gérer les transactions les Systèmes de gestion de base de données utilisent les ordres begin, commit et rollback

– begin ouvre une transaction sur le SGBD

– commit valide toutes les opérations effectuées depuis le begin précédent et clôt la transaction

– rollback annule toutes les opérations affectuées depuis le begin précédent et clôt la transaction

●Le SGDB sait:

–protéger les données si besoin

–faire attendre les utilisateurs

–Faire échouer une transaction en cas de time out

Page 15: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

15Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Illustration de la notion de transaction

Il y a 300€ sur votre compte. Vous faites un retrait de 50 euros au distributeur au moment où on vous fait un versement de 500 euros au guichet.

==> Vous avez perdu 500 euros !

Actions

Au distributeur Au guichet Dans la mémoire de l’ordinateur du guichet

Dans la mémoire du distributeur

Dans le système central

1 Vous interrogez le système

300 € 300 €

2 L’employé de la banque interroge le système central

300 € 300 €

3 Vous retirez 50 € 300–50 = 250 € 300 €

4 L’employé vous crédite de 500€

300+500=800 € 300€

5 L’employé valide la transaction => on écrit dans le SGBD du système central

800€ 800€

6 Vous validez la transaction=> on écrit dans le SGBD du système central

250€ 250€

Page 16: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

16Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Illustration de la notion de transaction : le compte en banque Solution avec la gestion des transactions

● Au moment où vous accèdez à votre compte, le SGBD (système de gestion de base de données) ouvre un transaction => l'enregistrement est protégé en écriture pour tout autre utilisateur

● Quand l'employé tente de lire le montant sur votre compte, le SGBD fait attendre la demande

● Vous faites votre retrait

● Du côté de l'employé, deux possibilités :

●Le temps d'attente maximum défini côté SGD est dépassé ==> le SGBD a levé une erreur et l'employé a eu un message « compte en cours de modification – essayez plus tard » (si l'application est bien programmée)

●Le temps d'attente maximum n'est pas dépassé : l'employé a eu la sensation d'un temps d'attente , mais a pu faire son opération normalement.

Page 17: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

17Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Répartition des traitements

● Il apparaît que le vrai problème c'est la répartition des traitements c'est la répartition des traitements

–Trop de traitements côté serveur c'est l'engorgement assuré pour tous les utilisateurs

–Trop de traitements côté client c'est le risque de voir des traitement échouer :●la machine client n'est pas assez puissante ,●ou n'a pas assez de mémoire,●ou n'a pas assez d'espace disque,●ou ....● Si on veut concevoir un système fiable un des problèmes majeurs c'est la répartition des traitements.

Page 18: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

18Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Typologie des traitements● Une application se décompose en trois parties :

● Présentation : (ou interface)●la définition du scénario de saisie●L'interprétation des interactions de l'utilisateur, tel que l'API Windows●L'affichage des données

Traitements :• les algorithmes propres à l'application : on parle de traitement métier● Exemple : la facturation, la gestion des impayés

Données:– Les opérations que fait le SGBD (recherche des données, stockage, contrôle des accès, gestion des transactions etc...)

Page 19: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

19Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Classez ces traitements selon leur type

● Lorsque le stock est inférieur à 10 % de la production de la semaine (en moyenne sur l'année passée) il faut passer commande pour se réapprovisionner

●Le système permet un accès rapide aux données

● La liste des produits doit être affichée par ordre alphabétique dans un tableau dont la forme est la suivante …

●Le système sauvegarde les données toutes les nuits.

●Les clients dont le montant total de commandes est > à 1500 euros pour l'année en cours ont une ristourne de 10 % sur leur commande.

Page 20: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

20

• Le contexte• La paye s'appuie sur des calculs complexes • Une grande entreprise (> 100 000 employés) et autant de payes

à calculer, éditer avec les virements correspondants. • On est obligé de lancer la paye le dernier jour du mois : tout doit

être fait dans la journée. • On ne peut se permettre le moindre retard.

Exercice: Concevoir l'architecture physique du système

• Proposer une architecture qui ne peut pas convenir et expliquer pourquoi elle ne convient pas

• Proposer une architecture qui peut fonctionner et la discuter

Question : Quelle est la particularité d’un système de paye et comment cela s’est il ressenti sur l’architecture que vous avez choisie ?

Exercice: une application de paye

Page 21: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

21

Le cas Facebook

Evolution exponentielle du nombre d’utilisateurs

Page 22: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

22

L'évolution exponentielle du nombre d'utilisateurs impose des contraintes à l'architecture physique :

•Évoluer rapidement : • Le moins de programmation possible (si possible pas du tout ) • Uniquement de la configuration

•Pourvoir scinder les traitements • Séparer le métier de l'accès aux données • Dédier des serveurs à des traitements particuliers (gestion des messages,

gestion des images, gestion des comptes, …) • Éviter au maximum de faire de la présentation

Le cas Facebook (2)

Page 23: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

23Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Les architectures n-tiers (pour le WEB)

● On associe à chaque couche des machines dédiés :- Les clients gérent la présentation- Le serveur WEB a en charge la gestion des requêtes HTTP- La logique des traitements est assurée par une serveur d'application- La gestion des données est assurée par un SGBD

Page 24: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

24Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Qu'avez vous retenu sur ...

●les différents types de traitement que réalise un système :●Présentation●Logique applicative●Gestion des données

Page 25: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

25Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Qu'avez vous retenu sur ...

● Les architecture n-tiers–Pourquoi ?–Qu'est qu'une architecture 1-tiers ?–Qu'est ce qu'une architecture 2-tiers ?

Page 26: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

26Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Remarque

● Les mainframes sont une architecture 1-tiers.●Le site central gére :–Les traitements métier–Les accès aux données–La présentation

● Les terminaux sont passifs

Page 27: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

27Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Remarque

● L'architecture client-serveur est une architecture 2-tiers● Le système de gestion de base de données prend en charge l'accès aux données● Le client prend en charge la présentation●Les traitements métiers sont répartis entre le client et le serveur.

Page 28: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

28Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Couche Présentation : Notion de client léger● Le client léger :●S'occupe uniquement de présentation●Ne comprend la signification des données qu'il traite●Typiquement : un PC avec un browser Web

–Avantage●Interopérabilié : les browser web prennent en entrée un langage normalisé : HTML●On n'a plus de problème lié à l 'hétérogeneité des matériels●Quand le logiciel change, pas besoin d'installer une nouvelle version du client

–Inconvénient●Ergonomie ...

Page 29: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

29Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Couche présentation : notion de client riche

● Un client lourd:–possède généralement des capacités de traitement évoluées–peut posséder une interface graphique sophistiquée.–Inconvénient :●tend à mêler la logique de présentation avec la logique des traitements●Quand le logiciel change de versions il faut réinstaller l'application

–Avantage :●Ergonomie

Page 30: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

30

• On a évoqué jusqu'ici des problèmes industriels

Rendre un système évolutif au moindre coût

• On va décrire dans la suite les solutions que Java offre à ce problème.

Java pour bâtir des architectures

Page 31: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

31

• Écrire des serveurs Web : Les Servlets • Écrire des traitements métiers et les déployer sur des serveurs dédiés : RMI

• Accéder à des bases de données : JDBC

Avec Java

Page 32: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

32Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Les serveurs WEB basés sur les scripts CGI

Requête http

Script CGI

Calcul de la page html

Serveur WEB

Décodage

Détermination de l’application à lancer

Lancement du script CGI

page html

encodage

Réponse http

Il y a autant de scripts CGI tournant en même temps que de requêtes entrantes en cours de traitement

Page 33: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

33

Les serveurs WEB basés sur les scripts CGI

A chaque requête entrante, on lance un script (historiquement perl) qui calcule la page html à renvoyer au browser.

on est conduit à lancer un nouveau processus à chaque requête. A chaque lancement on recharge en mémoire l’environnement d’exécution nécessaire à l’exécution du script.

Cela conduit à écrouler le serveur

Page 34: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

34Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Architecture d'un serveur Web dynamique

Page 35: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

35Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Servlets● Les servlets sont une technologie Sun● Ils sont basés sur :–le langage Java–Le protocole http

● Concurrents de Asp (Microsoft)

Page 36: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

36Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Servlets

●Ce sont des applications Java fonctionnant du côté serveur

●les servlets s'exécutent dans un moteur de servlet utilisé pour établir le lien entre la servlet et le serveur web.

●Ainsi le programmeur n'a pas à se soucier de détails techniques:

–connexion au réseau,

–la mise en forme de la réponse HTTP, ...

Page 37: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

37Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Servlet● Le moteur de servlet est un composant du serveur d'application ou serveur Web

●Le moteur de servlet reçoit les requêtes http

● En fonction de la requête entrante, le moteur de servlet détermine la servlet qui va traiter la requête

● Dans une thread séparée, il appelle une des méthodes doGet ou doPost

●Une servlet tourne dans une thread séparée

● Une servlet est écrite en java et peut donc appeler toutes les bibliothèques java et notamment faire des accès à des bases de données

Page 38: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

38Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Servlet● Cette architecture permet de gagner en performance :

●Les servlets sont chargées en mémoire●Elles répondent à des requêtes●On n'a pas besoin de relancer une application : on consomme beaucoup moins de ressources

–Les servlets s'exécutent dans un environnement protégé –Pas d'accès non autorisé à des ressources–Java empêche les accès non autorisés à la mémoire qui pourraient provoquer le crash du serveur–Si un servlet crashe ça ne fait pas crasher le serveur.

Page 39: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

39Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Cycle de vie d'une servlet

●Le cycle de vie d'une servlet est assuré par le conteneur de servlet.

● 1. le serveur crée un pool de threads auxquels il va pouvoir affecter chaque requête

● 2. La servlet est chargée au démarrage du serveur ou lors de la première requête

● 3. La servlet est instanciée par le serveur

● 4. La méthode init() est invoquée par le conteneur

● 5. Lors de la première requête, le conteneur crée les objets Request et Response spécifiques à la requête

Page 40: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

40Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Interaction avec la servlet

● Les canaux de communication sont décrits par les interfaces ServletRequest et ServletResponse

● La méthode service est appelée avec deux paramétres request (de type ServletRequest) et response (de type ServletResponse)

● L'objet request contient toutes les données envoyées par le client

● L'objet response est utilisé pour renvoyer les résultats vers les clients

Page 41: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

41Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Interface d'une servlet

La méthode doGet

●La méthode doGet est appelée à chaque requête GET

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException

●La méthode doPost est appelée à chaque requête POST

public void doPost(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException

Page 42: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

42

Moteur de servlet

Rechercher la servlet qui va traiter la requête

Décodage

Configuration du serveur

Servlet Ma Servlet

doGet ou doPost suivant la requête entrante

Traitement

Traitement d’une requête dans un moteur de servlet

Requête http

Réponse http

Page 43: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

43

Servlet

Pour définir sa propre servlet, il faut :

-Définir une classe Java qui hérite de HttpServlet

-Rédéfinir un de deux méthodes doPost ou doGet :

- doGet pour répondre aux requêtes http GET - doPost pour répondre aux requêtes http POST

- Enregistrer la servlet dans le fichier de configuration du serveur.

Page 44: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

44Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Exemple de servletpackage hall;

import java.io.*;import javax.servlet.*;import javax.servlet.http.*;

public class HelloWWW extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n" + "<HTML>\n" + "<HEAD><TITLE>Hello WWW</TITLE></HEAD>\n" + "<BODY>\n" + "<H1>Hello WWW</H1>\n" + "</BODY></HTML>"); }}

Page 45: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

45Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Résultat

Page 46: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

46Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Qu'avez vous retenu ...

● Sur les servlets ?–Qu'est ce qu'un servlet container ?– Qu'est ce qu'une servlet ?– Quels sont les avantages par rapport aux scripts CGI ?–Quel est le lien avec les architectures n-tiers ?

Page 47: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

47Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

L'URLUne URL (Uniform Resource Locator) est un format de nommage universel pour désigner une ressource sur Internet. Elle se décompose en 5 parties:

● Le nom du protocole :

–http, ftp, news, ....

●Identifiant et mot de passe : permet de spécifier les paramètres d'accès à un serveur sécurisé. ==> déconseillé car visible

● Le nom du serveur : Il s'agit d'un nom de domaine de l'ordinateur hébergeant la ressource demandée.

–On peut utiliser l'adresse IP ou le mot clé localhost

– le numéro de port : il s'agit d'un numéro associé à un service permettant au serveur de savoir quel type de ressource est demandée.

● Le chemin d'accès à la ressource :

–permet au serveur de connaître l'emplacement auquel la ressource est située,

–En général: l'emplacement (répertoire) et le nom du fichier demandé

–Pour nous le nom de l'application + le nom de la servlet

Page 48: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

48Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

URL

● Dans notre cas :http://localhost:8084/MonPremierServeur/HelloWWW

● http: protocole

● localhost : nom de la machine (ici machine locale)

● 8084 : numéro du port

● MonPremierServeur : nom de l'application

● HelloWWW : le nom de la servlet

A tester : Lancer un serveur web sur une machine et accéder à ce serveur depuis une autre machine.

Page 49: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

49Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Les cookies

●Un cookie c'est une paire (clé,valeur)

● Le browser tient pour chaque site visité, une liste des cookies pour ce site

● Le protocole http définit comment un client et un serveur gèrent les cookies:

– A chaque fois que le browser envoie une requête http à un serveur, il ajoute tous les cookies pour le nom de domaine du site

– Quand le serveur envoie une requête au client, il a la possibilité d'ajouter dans la requête des cookies

– Ils sont stockés sur le client

– Le client peut éventuellement modifier/créer des cookies en javascript

Page 50: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

50Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

==> Dans mozilla on peut voir les cookies: Outils/Options/Afficher les cookies

Pour le site google.co.uk il y a deux cookies

Pour localhost, il y a un cookie : probablement un developpement sur les servlets.

Page 51: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

51Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Notion de session

Dans un dialogue homme machine, on véhicule la plupart du temps un état : le contenu de la page dépend de ce qu'on a fait précédemment.– Exemple : le panier (site de commerce)

Il faut donc être capable d'associer une requête à un contexte. C'est-à-dire:– Reconnaître un utilisateur– Associer l'utilisateur à un contexte de session : toutes

les informations qu’il a saisies, sélectionnées, …

Page 52: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

52Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Servlet et Session● Les servlets gèrent les sessions au moyen du cookie JSESSIONID

● Le programmeur n'a pas à s'en occuper

● Avec Netbeans, la fenêtre Http Server Monitor permet de visualiser les cookies échangés

Le cookie JSESSIONID

Page 53: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

53

Framework Java/Servlet

Navigateur Client

ConnexionServlet

Page Connexion

Requête de connexion

http://MonSite/Connexion?iduser [email protected]&password=xxxx

request.getSession(true)

Existe-t-il un cookie « jSession Id » dans la requête ?

Calculer un nouvel identifiant unique pour valeur de jSessionId

Dans la map globale, créer une entrée pour le nouveau jSessionId

Créer un objet HttpSession et le stocker dans la map globale à l’entrée correspondant à l’identifiant calculéObjet HttpSession

SGBD

session.setAttribute(« iduser »,  « [email protected] »)

Stockage de la paire (« iduser »,  « [email protected] ») dans l’objet session

Le nouveau cookie est passé dans le retour en plus de la nouvelle page html.

Sauvegarde de la paire jSessionId , nouvelle valeur

Affichage de la nouvelle page

Gestion de la connexion avec les sessions

On ouvre la session : le cookie n’a jamais été crée

Authentification

On va lire les paramètres présents dans la requête

Page 54: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

54

Navigateur Client

ConnexionServlet

Requête

Framework Java/Servlet

request.getSession()

Existe-t-il un cookie « jSession Id » dans la requête ?

Extraire l’objet session de la map globale à partir de la valeur du cookie.Objet HttpSession

SGBD

Tratement d’une requête avec les sessions

On est passé par la page de connexion: le cookie a déjà été crée. On va trouver le cookie

session.getAttribute(« iduser »)

On accède aux données nécessaires en partant de l’id utilisateur et des paramètres présents dans la requête

Génération de la nouvelle page html.

On va lire en session l’id utilisateur

Réponse

request.getParameter(«param1 ») On va lire les paramètres présents dans la requête

Page 55: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

55Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Gérer une session côté serveur● Du côté serveur, il faut utiliser l'objet HttpSession

● Sur l'objet HttpRequest utiliser la méthode getSession:

●Renvoie la session associée à la requête●Si elle n'existe pas, on la crée et un id unique lui est affecté

● En interne, le servlet container gére une tableau associatif <valeurs JSESSION Id> → un objet HttpSession :

à chaque client son objet HttpSession

● L'objet HttpSession est à son tour un tableau associatif où l'on peut stocker des données.

Page 56: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

56Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Gérer une session côté serveur

● Accèder à la session, passer par la request:HttpSession session = request.getSession();

● Ecrire une donnée dans la session. Sur la classe HttpSession, utiliser la méthode :

setAttribute(java.lang.String name, java.lang.Object value)

==> L'objet est associé au nom qui est passé

● Lire une donnée en session. Sur la classe HttpSession, utiliser la méthode :

getAttribute(java.lang.String name)

Page 57: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

57Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Gérer une session côté serveur

● Exemplepublic class Caddie extends HttpServlet {public void doGet (HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { // Recupere la session HttpSession session = request.getSession(true); // Recupere l'age de l'utilisateur Integer Age = (Integer)session.getAttribute("Age");

if (Age != null) { // ... faire quelque chose // Ecrit la reponse out = response.getWriter(); } else { Age = new Integer(22); session.setAttribute("Age", Age) ; // ... faire quelque chose d'autre // Ecrit la reponse out = response.getWriter(); } }}

Page 58: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

58Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Application : Réalisation d'une servlet avec Netbeans et Tomcat

● Netbeans est un environnement de développement gratuit de qualité professionnelle développé par Sun.●Tomcat est un serveur d'application gratuit et open source

Page 59: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

59Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Concurrence entre les threads

● Chaque requête est traitée dans le contexte d'une seule thread

● Il n'y a qu'un seul objet Servlet

● On peut se représenter les choses de la façon suivante:●Le code des méthodes est exécuté par la thread●Les variables définies dans la méthode sont locales à la thread ●Les attributs de l'objet sont partagés par toutes les threads

Conséquence :

●Il peut y avoir des problèmes de concurrence !!!!

Page 60: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

60Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Concurrence entre les threads

● Exemple :public class Counter extends HttpServlet { private Integer counter = 0 ; protected void processRequest(

HttpServletRequest request,HttpServletResponse response)

throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter();

counter = counter + 1 ; try { out.println("<html>"); out.println("<head>"); out.println("<title>Servlet Counter</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Servlet Counter = " + counter.toString() + "</h1>"); out.println("</body>"); out.println("</html>");

} finally { out.close();}

}}

Où se situe le problème de synchronisation ?Comment le résoudre ?

Page 61: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

61Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Concurrence entre les threads

● Supposons l'ordre d'exécution suivant : count++ // Thread 1count++ // Thread 2out.println // Thread 1out.println // Thread 2

==> Thread 1 et Thread 2 afficheront la même valeur .

==> La valeur affichée sera supérieure dde 2 à la valeur précédente

● Pour résoudre le problème :

–Définir une méthode synchronisée :

private synchronized int inc() { return counter++ ; }

–Au lieu de faire directement counter++ faire :

int localCounter = inc() ;

–Et faire afficher localCounter

La méthode ne peut être exécutée en parallèle

Page 62: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

62Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Exercice : Gestion d'un forum● Réaliser une application web composée de :–Une page d'identification par un nom d'utilisateur

–Une page Liste des messages contenant :

●la liste des utilisateurs connectés●La liste des messages que vous ont été adressés et par qui●Un lien permettant de se déconnecter●Le nom de l'utilisateur connecté avec sa date de connection●Un lien permettant d'accéder à la page de création de message

–Une page Création de message contenant :

●Une Combo box permettant de choisir l'utilisateur auquel vous voulez envoyer un message●Une zone de saisie pour le corps du message●Un bouton « Envoyer »

Page 63: 1 Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information Présentation Stéphane TALLARD Ingénieur en Informatique

63Système d'Information pour l'entreprise – Intégration des données dans les Systèmes d'information

Questions

● Comment faire pour protéger les servlet :–La servlet qui affiche les utilisateurs connectés ne doit pas pouvoir être affichée lorque l'utilisateur ne s'est pas identifié–La servlet qui permet d'envoyer un message ne doit pas pouvoir être affichée lorque l'utilisateur ne s'est pas identifié●Exercice : si l'utilisateur ne s'est pas identifié, c'est la page de login qui lui est présenté