Design Web Patterns for JavaCards

Dimension: px
Commencer à balayer dès la page:

Download "Design Web Patterns for JavaCards"

Transcription

1 Design Web Patterns for JavaCards (A PATTERN ORIENTED LIGHTWEIGHT MIDDLEWARE FOR SMARTCARDS) version du 10/Octobre/2004 jm Douin, Cnam/cédric 1

2 Sommaire JavaCard comme «WebServices» Ou la programmation Java côté serveur(javacard) Architecture «orientée objet» et Composite Gestion d un grand nombre de JavaCard, structuration, hiérarchie, Parcours distribué et Visiteur Mise à jour, interrogations globales ou sélectives, Exemples Deux TPs au Cnam Extensions Toujours possibles 2

3 Bibliographie(points d entrées) Publications : et Routaboul Joël, Lebougre Hervé. Présentation Java Card. ValeurC ISTR 04/2003 Barber, J. (1999) The Smart Card URL Programming Interface. Gemplus Developer Conference, Di Georgio R. Develop, build, and test Java Card applications Harald Vogt, Michael Rohs, Roger Kilian-Kehr, Middleware for Smart Cards Chapter 16 of the book Middleware for Communications, John Wiley & Sons Guthery, S., Kehr, R., Posegga, J. (2000) How to turn a GSM SIM into a Web Server. IFIP CARDIS Rees, J., Honeyman, P. (2000) Webcard: A Java Card Web Server. IFIP CARDIS 2000, CITI TechReport // un serveur Web sur une JavaCard actif depuis plusieurs années Itoi, N., Fukuzawa, T., Honeyman, P. (2000) Secure Internet Smartcards. Java Card Workshop, Cannes, CITI Tech Report Chen Sun Zhiqun Chen, Java Card Technology for Smart Cards - Architecture and Programmer's Guide, Addison- Wesley, ISBN Ortiz, Enrique, An Introduction to Java Card Technology /javacard2/ /javacard3/ Donsez, D. Transparents des cours Brazil Dallas/JavaCard 3

4 Protocole HTTP Objectifs Intergiciel/middleware léger Les JavaCard sont accessibles depuis le Web Une URL par Applet/Cardlette Quel environnement? Postulat : Toute machine possède un serveur Web «Contraintes» matérielles Serveur Web de petite taille < 50 ko Station, PC, Cartes TINI, Tout type de JavaCard, smartcard 4

5 JavaCard comme «WebServices» internet Serveur HTTP PC Ajout, retrait Lecteur de cartes Applet == servlette est une des conséquences Une JavaCard devient un ensemble «mobile» de servlettes 5

6 Prototypes au Cnam Environnement matériel JavaCard de dallas compatible API JavaCard 2.0 Lecteurs sur ports séries et USB Cartes TINI 1-Wire natif PC, Station banalisées PocketPC, contrôle temporaire développements en cours avec d autres JavaCard API2.1(Shareable), API 2.2 (jcrmi) smart-cards OpenCard Framework, PC/SC 6

7 HTTP <-> APDU http PC ou adresse IP handler ou servlette javacardid ={jc1 jc2 jc3} AppletID = nom de la servlettejc PC /handler/ APDU Lecteur de cartes jc1 jc2 jc3 AppletID de 5 à 16 caractères 7

8 HTTP <-> APDU Applet== servlette Premiers bénéfices escomptés Programmation JavaCard est-elle simplifiée? Nouvelles applications? Une seule classe d Applet Un seul point d entrée Unique format des paramètres en entrée comme en sortie HTTP = Couplage faible? http APDU Lecteur de cartes PC /handler/ jc1 jc2 jc3 8

9 HTTP<-> APDU Depuis le PC/Proxy Un exemple de requête (voir en annexe) jc1.select("crypter"); byte[] DataIn = new byte{ {, p, a, r, a, m, =,, t, e, x, t, e, } }; response = jc1.sendapdu(new CommandAPDU(0, 0, 0, DataIn, 0); result = new String(response.getDataOut()); 9

10 HTTP<-> APDU Depuis la JavaCard Un exemple de servlette (voir en annexe) Requête : apdudata = Réception des données (de type byte) //Toujours le même point d'entrée, if( buffer[iso.offset_ins] == SERVLET_METHOD){ byte[] texte = extrairebytearray(apdudata, param); if(texte!=null){ // traitement associé ici du cryptage 10

11 Mise en Œuvre du Proxy Serveur Web sur une station, TINI, PocketPC, De petite taille Portable Opensource Une seule servlette d accès aux javacard 11

12 Serveur Web Brazil : pour l embarqué Serveur Web sur carte TINI < 50 ko Sources Java disponibles, Ses 3 composantes Handler Servlettes légères, 2 méthodes : init et respond Filter Filtrage des transactions entre «handler» Templates Étiquettes XML, interprétées par le serveur avant l envoi d une page HTML aux clients 12

13 Serveur Web = Brazil Un handler Brazil assure l interface HTTP/APDU Un filtre/template assure l interprétation des balises venant des JavaCard Adéquation URL JavaCard L URL précise la javacard ainsi que la servlette Les paramètres de l URL sont transmis tels quels aux servlettes de la JavaCard JavaCard HTML Les servlettes de la JavaCard retournent un texte HTML, retourné au navigateur ou à une application cliente distante (ou locale) 13

14 Ou tout autre serveur (de petite taille) Un moteur de servlettes conviendrait Ex. le moteur de servlettes pour TINI n importe quel serveur HTTP ferait un bon candidat! Protocole HTTP/APDU Seul le format des paramètres destinés aux JavaCard est à respecter 14

15 Couplage faible Une JavaCard est un ensemble de servlettes Un ensemble de servlettes peut remplacer une JavaCard internet internet Serveur HTTP PC Serveur HTTP PC portail Ajout, retrait Lecteur de cartes internet Serveur HTTP servlettes 15

16 HTTP <-> APDU, quelques questions Quels sont paramètres pour une servlette? Comment découvre-t-on ces paramètres? Mobilité quelles sont les conséquences? Une JavaCard est mobile donc les servlettes sont mobiles Interaction avec l hébergeur comment? Variables partagées? Entre l hébergeur et une javacard, entre 2 javacard Exclusion mutuelle? Accès protégé à une javacard, à une servlette 16

17 URL et paramètres Quels sont paramètres pour une servlette? Comment les découvre-t-on? Choix effectué Paramètres ou signature = Formulaire HTML <FORM ACTION="http://PC/handler/javacardId/servletId/" > <input type="text" name="texte" size="20"> <input type="submit" name="exec" value="exec" size="10"> </FORM> Ici un seul paramètre : texte Plusieurs signatures par servlette 17

18 Signatures embarquées Chaque servlette contient la description des paramètres (signature) qu elle attend Plusieurs signatures par servlette sont possibles Une première implémentation : Les formulaires HTML sont compressés et embarqués Ces formulaires deviennent des signatures 18

19 Embarquées et compressées Méthode de compression inspiré de l algorithme des signatures des méthodes de la JVM <FORM ACTION="http://PC/handler/javacardId/servletId/" method="post" > <input type="text" name="texte" size="20"> <input type="submit" name="exec" value="exec"> </FORM> devient 5Ttexte20Sexec exec (ici codage sur 5 digits) Ou bien 2Tte20Sexex (codage sur 2 digits) Note : un outil est en 19

20 Découverte des paramètres(1) Par convention l obtention de la signature n utilise cette URL (n>=0) Exemple : de requête : Le nombre de formulaire est obtenu de la même manière Note : ces implémentations sont à la responsabilité du développeur de la servlette 20

21 Découverte des paramètres(2) Le Handler reçoit 5Ttexte20Sexec exec de jc1 Celui-ci peut le décompresser et le retourner le formulaire «original» au client Ajout, retrait handler PC_A Lecteur de cartes Ou bien Note : PC_A/Handler/ doit être une variable, servlettes mobiles jc1 21

22 Découverte des paramètres(3) Serveur HTTP PC_A Serveur HTTP PC_B Lecteur de cartes jc1 Lecteur de cartes jc1 Les JavaCard, (les servlettes) sont mobiles 22

23 Découverte des paramètres(4) 5Ttexte20Sexec exec devient <FORM ACTION="http://PC_B/handler/javacardId/servletId/" method="post" > <input type="text" name="texte" size="20"> <input type="submit" name="exec" value="exec"> </FORM> dépend de la machine hôte C est l hébergeur qui s en charge ou bien une page html dans laquelle PC/Handler/ est un paramètre 23

24 URL paramétrée Une technique classique ( programmation coté serveur) : une des servlettes propose le formulaire attendu <tag>form action=<get URLHandler>javacardId/servletId/ </tag> <input type="text" size="40" name= "texte" value="formulaire retourné par la JavaCard"> <input type="submit" name="b1" value="exécuter servletid"> </form> balise <get URLHandler> le site d accueil + le nom du Handler Note : à essayer en 24

25 Exemple de formulaire engendré FormEnGras2 retourne un formulaire pour EnGras2 EnGras2 est une servlette qui retourne ce <b> texte </b> Note : les 2 servlettes ne sont pas nécessairement sur la même JavaCard, le cas sur cet exemple 25

26 Filtre et Template bien utiles Interprétation de balises Les prédéfinies <set <sql <form <sendmail, etc SetTemplate, SqlTemplate, FormTemplate, Template Définies par l utilisateur <user <clock <javacard ID <notify... UserTemplate, ClockTemplate, JavaCardTemplate 26

27 Un exemple <clock > PC Serveur HTTP Balises délivrées par les servlettes de la JavaCard 27

28 Un exemple de page retournée <clock > JavaCard ClockTemplate Hébergeur PC Serveur HTTP Client Note : voir en annexe, et à essayer en 28

29 Un autre exemple <sql prefix=liste> select DATE,TP,NOTE from TP_CDI where MATRICULE='I044733' and tp like 'tp_' order by TP</sql> PC Serveur HTTP BDD Accès à une Base de données : une requête SQL 29

30 Paramètres et variables partagées Entre deux servlettes à l aide des formulaires (HTML) Champ rempli par une servlette et envoyé à une seconde servlette Ce champ est en «clair» ou «caché» <input type=hidden name= value=... Variables partagées( javacard API 2.1) En interne à l aide de l interface Shareable Encore une technique empruntée à la programmation coté serveur 30

31 Paramètres et variables partagées Entre une servlette et l hébergeur Balises (SetTemplate, ) <set name= value= <get name> Donc, en conséquence Variables partagées Entre deux servlettes Entre deux javacard «locales» Entre deux javacard distantes Entre une servlette et «internet» http PC APDU Lecteur de cartes variable jc1 jc2 <set.. Note : à essayer en suivie de 31

32 Accès en exclusion mutuelle Ressource partagée, Section critique sur le Web Exemple : Un classique porte-monnaie internet Serveur HTTP Client1 Client2 PC Un classique en programmation côté serveur Lecteur de cartes synchronized(servlette){ } 32

33 Exclusion mutuelle Implémentation Reprise de ETFA 2003, (voir pattern Itérateur) Identification du client, Association Client et Cookie Identification la servlette, lors d une requête, Association Servlette/URL et Verrou Gestion installée sur l hébergeur Par un Handler Brazil indépendant Les URLs deviennent les «objets» dont les accès peuvent être en exclusion mutuelle 33

34 Exclusion mutuelle et URL(1) ClientA ClientB beginmutex& Le clientb est bloqué ClientA ClientB Le clientb peut accéder à l URL souhaitée, et entre en section critique Note: l attente contient un délai de garde et permet au clientb de poursuivre son exécution 34

35 Exclusion mutuelle et URL(2) Utilisation effective de Fin du délai de garde clientb A R A R clienta A R A R D D D t A = D = R = Les clients sont distants en mode session 35

36 Exclusion mutuelle, une trace : ClientA autres requêtes, déconnexion, etc Alias de beginmutex : lock, endmutex : unlock 36

37 Exclusion mutuelle, une trace : ClientB Le client A possède la «ressource URL» B est bloqué Lorsque le client A libére la «ressource URL» Ou bien le délai est échu 37

38 Exclusion mutuelle? Que se passe-t-il si Le client bloque indéfiniment la ressource/url? Le client disparaît La JavaCard et ses servlettes sont retirées? Cette JavaCard s est déplacée Des solutions existent... voir avec l usage conjoint du modèle transactionnel JCSystem.beginTransaction(); JCSystem.commitTransaction(); JCSystem.abortTransaction(); 38

39 Conclusion HTTP<->APDU La conclusion de Barber 1999, Cross platform availability The use of HTTP as the communications protocol means that any browser at all can communicate with the card server. The use of Java to implement the card server means that any platform that supports a Java virtual machine can host the card server Flexibility Easy to add extra functionality in the form of modules. Remote administration is available, so module maintenance doesn't have to be the user's responsibility. Remote administration also means support and troubleshooting is easier Rapid development The use of HTTP allows parameters to be passed in a human readable form, so communication problems tend to be resolved quickly. The use of Java enables cross platform deployment without the problems traditionally associated with it. Security model considerations Responsibility for security now lies in the card server, not the browser. The card server can implement the appropriate model for its intended use, with the Java class library providing enough functionality to implement mechanisms such as code signing, access control lists and so on. 39

40 Conclusion HTTP<->APDU Programmation Java Côté Serveur Techniques «connues» de programmation des servlettes Retour à une programmation par les objets Adéquation servlette / instance de classes MAIS. 40

41 Intégration, accès depuis internet Quelle architecture pour Découverte locale des services? Ajout, retrait d une JavaCard Découverte globale des services? Depuis le Web Interrogation, mise à jour, déploiement 41

42 Découverte locale des services Ajout/retrait d une JavaCard Le Handler Brazil est un observateur(etfa2003) Une liste de toutes les servlettes est maintenue Commandes et gestion locales possibles PC Lecteur de cartes 42

43 Gestion locale / HTTP, exemples Liste des commandes possibles Liste de toutes les servlettes disponibles Obtention de la version du firmware Téléchargement d une servlette Retrait d une servlette 43

44 Un exemple de gestion en local 44

45 La liste des servlettes Usage du formulaire ou avec cette URL depuis un navigateur ou une application 45

46 Gestion locale ou distante / HTTP Tests en ligne, décembre et et aussi (Cette URL est une indirection vers dont le seul client possible est lmi80, Plusieurs JavaCard sont installées dans les locaux de l ESIEE à Marne La Vallée, L accès à l une des servlettes devient 46

47 Découverte et gestion locales en 4 classes JavaCardListenerHandler HTTP <-> APDU JibServletList la liste des servlettes sur ce poste FileData Transfert de fichiers, extrait d un projet de Valeur C Formulaire Compression/Décompression d un formulaire HTML FormulaireHandler est un utilitaire accessible depuis un navigateur 47

48 Découverte globale des services Voir ETFA 2003 Pattern Observateur Généralisé avec le Modèle Vue Contrôleur Rappel : Environnement, postulat Tout machine possède un serveur Web ou est accessible par un portail (ayant son URL) 48

49 MVC Modèle Vue(s) Contrôleur, la base Evènements Contrôle Vue 1 modification Mise à jour Vue 2 Modèle 1) inscription des Vues, Modèle.addObserver( ) 2) une modification engendre une mise à jour des Vues -> Ajouts de vues et de contrôles simplifiés 49

50 MVC Web Evènements Contrôle Vue 1 Mise à jour Modification Vue 2 Modèle 1) inscription des Vues, 2) une modification engendre les requêtes 50

51 Découverte Globale Découverte sur le Web des JavaCard Ajout/retrait Une modification est effectuée La notification devient une requête HTTP Insérer une JavaCard engendre cette requête Retirer une JavaCard engendre cette requête 51

52 Ajout/retrait de JavaCard ou servlettes internet PC_C1 Contrôle PC_C2 Contrôle Ajout, retrait Lecteur de cartes Ajout, retrait Lecteur de cartes 52

53 Le site Modèle/Web PC_M Pattern Observateur Les observateurs s inscrivent Le site reçoit une notification Les observateurs inscrits ou vues sont mis à jour STATE ::= {ARRIVAL DEPARTURE ADD_SERVLET DELETE_SERVLET DELETE_ALL_SERVLET} 53

54 Ajout retrait de cartes PC_V2 Vue PC_V1 Vue PC_M Modèle TINI PC_C3 Contrôle intranet internet PC_C1 Contrôle PC_C2 Contrôle Ajout, retrait Lecteur de cartes Ajout, retrait Lecteur de cartes 54

55 PC_V1 une console/serveur Web LOG: : request done LOG: : socket close LOG: server: : new connection LOG: : Request 24 POST /console/update/ HTTP/1.1 LOG: : Request: Reading content: 86 LOG: : main.: invoking handler: console LOG: : console.: {arg=arrival_1c , observable=http:// :8765/javacard/monitor/} source : arg : ARRIVAL_1C LOG: : request done LOG: : Request 23 POST /console/update/ HTTP/1.1 LOG: : Request: Reading content: 86 LOG: : main.: invoking handler: console LOG: : console.: {arg=arrival_a d296, observable=http:// :8765/javacard/monitor/} source : arg : ARRIVAL_A D296 LOG: : request done LOG: : Request 22 POST /console/update/ HTTP/1.1 LOG: : Request: Reading content: 86 LOG: : main.: invoking handler: console LOG: : console.: {arg=arrival_6e00c b96, observable=http:// :8765/javacard/monitor/} source : arg : ARRIVAL_6E00C B96 LOG: : request done LOG: : Request 21 POST /console/update/ HTTP/1.1 LOG: : Request: Reading content: 86 LOG: : main.: invoking handler: console LOG: : console.: {arg=arrival_3900c c696, observable=http:// :8765/javacard/monitor/} source : arg : ARRIVAL_3900C C

56 PC_V2 une applette/serveur Web Une applette peut contenir un serveur Web voir un extrait en annexe Ce serveur s installe dans n importe quel navigateur, n importe où Cette applette ne peut dialoguer qu avec le serveur dont elle est issue, ici le modèle 56

57 PC_V2 une applette/serveur Web 57

58 PC_V3 une base de données/serveur Web BDD SQL PC_V3 Vue HTTP Client/ navigateur HTTP internet Une table de la BDD maintient une liste : Toutes les JavaCard, Servlettes, Formulaires INSERT INTO table VALUES(. 58

59 PC_V3, base de données, discussion Un table recensant toutes les JavaCard présentes Nom du propriétaire URL Formulaire(s) Informations diverses, (version, Interrogation à distance possible SQL/select, sélection (plus ou moins précise) Un exemple : 100 JavaCard * 10 Servlettes Soit 1000 URLs (au minimum) + formulaires -> Table (très,trop) volumineuse? Structuration faible, Gestion non objet, non répartie 59

60 PC_V4 maintenance/serveur Web PC_V4 Vue HTTP internet PC_C1 Contrôle Un observateur = Une autre fonctionnalité Dès l insertion, une mise à jour est effectuée Ajout, retrait Lecteur de cartes 60

61 Redondance, exemple PC_V2 Vue PC_V1 Vue PC_M1 Modèle PC_M2 Modèle PC_C1 Contrôle PC_C2 Contrôle Ajout, retrait Lecteur de cartes Ajout, retrait Lecteur de cartes 61

62 Le site Modèle Défini lors de la configuration ou Peut être installé dynamiquement auprès des sites Contrôleurs Note : Une liste des serveurs inaccessibles obtenue par une variante du Pattern HeartBeat est mise en œuvre La notification peut-être conditionnelle (un filtre est transmis lors de l inscription) 62

63 Ajout dynamique de «modèle» Pour tous (ou certains) PC_Ci Inscrire PC_M2 comme Modèle de i=1 à n url=http://pc_m2/ 63

64 Le Modèle en interne Pattern Observateur, Adéquation requête HTTP/ méthodes Java usage de java.util.observable et java.util.observer Correspond à l appel addobserver(new urlrequest(url)) (un filtre appliqué aux arguments peut être transmis) Correspond à l appel deleteobserver(new urlrequest(url)) Correspond aux appels de setchanged();notifyobserver() (notification conditionnelle en utilisant le filtre) /tostring/ 64

65 Le Modèle en 2 Classes et 2 interfaces 65

66 La Vue en interne Un Handler acceptant ce type de requête HTTP ou une Applette contenant un serveur Web (dialogue avec PC_M) ou toute autre application acceptant une requête HTTP 66

67 Le Contrôleur en intene Un MVC en local Vue contrôle Modèle API de Dallas public void devicearrival(devicemonitorevent dme) public void devicedeparture(devicemonitorevent dme) 67

68 Le contrôleur en 4 classes JavaCardListener extends java.util.observable MVC Découverte locale, notification 68

69 Encore plus précis La version initiale assure une notification à la suite de Ajout/retrait de JavaCard, Ajout/retrait de servlettes «Remise à zéro» d une javacard Le «Grain» peut-être plus fin : Ajout/retrait d une JavaCard précise Ajout/retrait d un nom de servlette Seuil maximal de mémoire utilisée est atteint Seuil maximal du nombre de servlettes est atteint Ces observateurs peuvent être précisés dans le fichier de configuration ou ajoutés en cours d exécution 69

70 Premières conclusions Protocole uniforme Tout ordinateur connecté est un client/acteur Léger, portable, accessible quelques kilo-octets + 50Ko(serveur) + API Programmation Java côté serveur pour JavaCard Sécurité habituelle du Web, https, certificat,.. Cryptage/décryptage embarqués 70

71 Structuration et parcours Gestion d un grand nombre de serveurs? Plusieurs centaines, milliers de JavaCard? Accès sélectif? Seules quelques JavaCard sont à interroger Pour toutes les JavaCard, dès qu elles se présentent sur le réseau (intranet/internet)? Mise à jour? Déploiement, téléchargement, Distants? Sécurité? 71

72 Architecture orientée objet et Composite Gestion d un grand nombre de JavaCard Base de données centralisée ou Pattern Composite distribué Définition d une grammaire à l aide du Pattern Composite component ::= composite terminal composite ::= component terminal ::= [symbole] 72

73 Un Composite possible, ETFA

74 Un Composite pour les JavaCard 74

75 Quelques classes ou interface public interface Visitable{ abstract public Object accept(visitor v); abstract public boolean isvisitable(string filter); } public abstract class HTTPObject implements Visitable { protected String url; abstract public String geturl(); } public boolean isvisitable(string filter){ return Glob.match(filter, geturl()); } public class Cardlet extends HTTPObject{ public Cardlet(String url){ } this.url = url; public String geturl(){ return url;} public String tostring(){return this.getclass().getname() + "_" + "_ " +geturl();} public Object accept(visitor v){ }} return v.visit(this); 75

76 Une des configuration(s) Une phrase issue de cette grammaire représente une configuration matérielle particulière Le découpage est logique, structuré par les clients selon leurs souhaits Architecture est (ne peut être que) configurée dynamiquement Collection collect = new Course("Clock","http://localhost:8765/"); collect.add(new Cardlet("http:// :8765/javacard/monitor/1C /Clock2/")); collect.add(new Cardlet("http:// :8765/javacard/monitor/1C /Clock2/")); Collection vivaldi = new List("vivaldi","http://vivaldi.cnam.fr:8765/"); collect.add(vivaldi); 76

77 MVC + Composite Comment? Un nœud du composite est un observateur d un Modèle ou le modèle lui-même Ce nœud est issu d une structuration logique des ordinateurs Ce nœud contient le Handler Brazil approprié Le client s adresse au Composite, racine ou à l un de ses composants 77

78 Un exemple : Une salle de cours/tp au Cnam Une dizaine de PC avec lecteur Certains étudiants sont chez eux avec une JavaCard D autres utilisent à distance, les JavaCard installées en lmi80.cnam.fr 78

79 Une architecture possible vivaldi extérieurs lmi80 extérieurs lmi lmi «adsl» lmi lmi lmi lmi

80 «Cartographie» vivaldi Collection cours = new Course("CSIML_B2","2003","http://localhost:8765/"); cours.add(new List("http://lmi80.cnam.fr:8080/"); cours.add(new List("http://lmi71.cnam.fr:80/"); cours.add(new List("http://lmi72.cnam.fr:8181/"); lmi80 Collection cours = new Group("http://localhost:8080/"); //ajout dynamique des clients «adsl» lmi71 Collection cours = new Group("http://localhost:80/"); cours.add(new List("http://lmi73.cnam.fr:81/"); cours.add(new List("http://lmi75.cnam.fr:82/"); Inscription des serveurs statique ou dynamique Fichier de configuration ou à l exécution 80

81 Une Requête en vivaldi vivaldi extérieurs lmi80 extérieurs lmi lmi «adsl» lmi lmi lmi lmi

82 Une requête en vivaldi Collecte distribuée de tous les résultats (par exemple) Accès concurrent, parallélisme possible 82

83 Les classes du Composite Pattern Composite «classique» Accessible sur tous les serveurs Ajout/retrait dynamiques possibles Nécessaire aux javacard «mobiles» 83

84 Critiques/ réponses Critiques habituelles du Composite? À priori oui Supporte mal les modifications Ajout d un nouveau composite? Ajout d une nouvelle famille de JavaCard? Parcours : Itérateur ou Visiteur (ETFA2003) 84

85 Parcours distribué et Visiteur Mise à jour, Maintenance, Interrogations, Déploiement, Déclenchement de certaines servlettes 85

86 Un Visiteur Possible/ETFA 86

87 Un Visiteur possible pour JavaCard 87

88 La classe Visitor public abstract class Visitor{ public Object visit (HTTPObject object){ return object;} public Object visit (Cardlet cardlet){ return cardlet;} public Object visit (DS1957B ibutton){ return ibutton;} public Object visit (DS1955B ibutton){ return ibutton;} public Object visit (List list){ return list;} public Object visit (Course course){ return course;} } 88

89 Exemple : StringVisitor public class StringVisitor extends Visitor{ public Object visit (Cardlet cardlet){ return cardlet.tostring(); } public Object visit (DS1957B ibutton){ return ibutton.tostring(); } public Object visit (DS1955B ibutton){ return ibutton.tostring(); } public Object visit (Collection c){ } return c.tostring(); } public Object visit(list l){ return visit((collection)l);} public Object visit(course c){ return visit((collection)c);} 89

90 Exemple HTTPVisitor public Object visit (Cardlet cardlet){ if(cardlet.isvisitable(this.filter)) return cardlet + "[" + résultatdelaconnexion(cardlet.geturl()) + "]"; else return ""; } public Object visit (Collection c){ String str = new String("[" + c.geturl() + "_["); if(c.geturl().startswith("http://localhost")){ Iterator it = c.iterator(); while (it.hasnext()){ } } str = str + ((HTTPObject)it.next()).accept(this); if(it.hasnext()) str= str + ", "; return str + "]"; return str + résultatdelaconnexion(c.geturl() + "visit/?collection=" + c.getclass().getname()) + "]"; } public Object visit (DS1957B ibutton){return this.visit((collection)ibutton);}... 90

91 D autres visiteurs VisitorSave Sauvegarde d un état sur chaque machine VisitorDownServer Quels sont les serveurs qui ne répondent plus? Etc... 91

92 Visite distribuée Tout modèle contient un «VisitorHandler» Les ajouts sont dynamiques Un filtre permet de préciser si le nœud doit être visité 92

93 VisitorHandler Un Handler dédié à la visite adéquation URL <-> visite cohérence des visites, Ajout et retrait dynamiques de cardlette 93

94 Une requête en vivaldi Visite distribuée : collecte de tous les résultats Accès concurrent 94

95 L exemple du composite revisité Sur le site lmi80 : Collection collect = new Course("Clock","http://localhost:8765/"); collect.add(new Cardlet("http:// :8765/javacard/monitor/1C /Clock2/")); collect.add(new Cardlet("http:// :8765/javacard/monitor/1C /Clock2/")); Collection vivaldi = new List("vivaldi","http://vivaldi.cnam.fr:8765/"); collect.add(vivaldi); System.out.println("HTTP = " + collect.accept(new HTTPVisitor())); System.out.println("String= " + collect.accept(new StringVisitor())); ou 95

96 Sur le site vivaldi : Un exemple, suite gr = new List("vivaldi","http://localhost:8765/"); gr.add(new Cardlet("http:// :8765/javacard/monitor/ F96/TB_Clock/")); 96

97 Visiteur : première mise en œuvre Un visiteur HTML Collecte de toutes les URLs accessibles Un visiteur HTTP Collecte de toutes les URLs accessibles 97

98 Exemple : Visiteur HTML 98

99 Critiques/réponse Ajout d une nouvelle visite Ajout d un nouveau composite Version du serveur, une solution? Emploi de JavaWebStart (hors systèmes embarqués, hors TINI) 99

100 Exemples Deux tp au Cnam en janvier Lecture de l horloge interne à chaque JavaCard (Java ibutton) Collecte des résultats : Installation d une servlette type/un corrigé sur les javacard testées Énoncé en cours de rédaction Carte d auditeur, cryptage Lié à JFOD La javacard comme Unité de stockage de valeur, (DS2438?) Ecriture par Lecture de la moyenne, min, max La javacard contient une page html constituée de balises html telles que <sql, <debug, <queue, <sendmail, À suivre 100

101 Discussion/Bilan 101

102 Extensions La JavaCard devient un acteur avec initiatives Premières idées : à compléter Usage de URLClassLoader post file = archive.jar Téléchargement et exécution d une archive contenu dans une JavaCard Cette archive peut contenir une application de dialogue avec les Servlettes d une ou des JavaCard 102

103 Une solution toute prête La Javacard contient une page HTML avec des templates adaptées <load archive.jar> URLClassLoader <execute Test.main> Instrospection ou findclass Ces templates sont analysées par le serveur, la machine hôte. A l insertion une requête HTTP particulière est effectuée 103

104 Un exemple lecture d informations issues d un capteur Dès son insertion au Cnam La «JavaCard» interroge et mémorise les dernières mesures du taux d humidité en , un ibutton DS2438 Ces mesures sont ensuite analysées (sur un autre poste) 104

105 Un exemple à suivre À vérifier Une javacard ou l hébergeur contient un.jnlp L archive téléchargée contient une application Usage de JavaWebStart possible? 105

106 Une Conclusion Programmation des JavaCard comme des serveurs Gestion d un grand nombre de JavaCard Déploiement, téléchargements facilités Communication entre deux javacard envisagée ksoap en cours de tests JXTA + TINI + JavaCard Intégration en cours de JiniCard 106

107 Annexes Installation des outils JavaCardListenerHandler Programmation des Servlettes Passage des Paramètres Signatures embarquées Utilitaires Extrait de l applette/serveur Web Les cookies en Java Les commandes : compilation et édition des liens 107

108 Installation des outils Ib-IDE win32/other ftp://ftp.dalsemi.com/pub/ib-ide_2.0/ Outils indépendants (sans JavaCard) Compilation : un jdk option target 1.1 édition des liens BuilJibBlet Téléchargement depuis le Web, outil en ligne Formulaire compressé : outil en ligne 108

109 JavaCardListenerHandler MVC Local Global -> couplage faible Critiques Tests à faire (plusieurs utilisateurs) Accès en exclusion mutuelle à la liste des JavaCard, quelque soit le port physique utilisé 109

110 Programmation des servlettes Voir la bibliographie démarches Test Unitaire avec Bluej ib-ide mode simulé Enfin le Téléchargement Un exemple la servlette <B>EnGras2</B> 110

111 La servlette EnGras2, extraits public class EnGras2 extends Applet{ public static final byte SERVLET_METHOD = (byte)0; final static private byte SELECT_INS = (byte)0xa4; private byte[] apdudata; /* le formulaire compressé (20 octets): "5Ttexte20Sexec exec " */ private byte[] signature={'5','t','t','e','x','t','e','2','0','s','e','x','e','c',' ','e','x','e','c',' '}; private final byte[] sig ={'s','i','g'}; /* les paramètres de la servlette */ private final byte[] texte={'t','e','x','t','e'}; // public EnGras2(){/* Register this applet with the JCRE */ register();} public static void install(apdu apdu){ new EnGras2();} public void process(apdu apdu){ byte[] buffer = apdu.getbuffer(); //Determine if the applet is being selected. if((buffer[iso.offset_cla] == SELECT_CLA) && (buffer[iso.offset_ins] == SELECT_INS)){ return;} apdudata = new byte[buffer[iso.offset_lc] & 0x0FF]; short apdudataoffset = 0; 111

112 La servlette EnGras2, extraits short bytesread = apdu.setincomingandreceive(); //Read in the entire APDU. //Loop until all bytes have been read. while (bytesread > 0){ Util.arrayCopyNonAtomic(buffer, ISO.OFFSET_CDATA, apdudata, apdudataoffset, bytesread); apdudataoffset += bytesread; bytesread = apdu.receivebytes(iso.offset_cdata); } //Prepare the apdu for sending apdu.setoutgoing(); apdu.setoutgoinglength(max_send_length); //Toujours le même point d'entrée, if( buffer[iso.offset_ins] == SERVLET_METHOD){ byte[] txt = extrairebytearray(apdudata, texte); // /?texte=xxxxxxx&... if(txt!=null){ // texte est présent final byte[] pre={'<','b','>'}; final byte[] post={'<','/','b','>'}; sendbytearray(apdu, concat(pre,txt,post)); }else{ // est_ce la signature qui est souhaitée?? //?sig=0, seule 0 est implémentée byte[] sign = extrairebytearray(apdudata, sig); if(sign!=null && sign[0]==(byte)'0'){ sendbytearray(apdu,signature); }else{ ISOException.throwIt(ISO.SW_INS_NOT_SUPPORTED); } } // fin de la'analyse des paramètres de type CGI }else{ ISOException.throwIt(ISO.SW_INS_NOT_SUPPORTED); } } 112

113 Grammaire Passage des paramètres form ::= n {text other} avec n=n1 text ::= T {name} n1 size other ::= type {name} n1 {value} n1 type ::= S R H C name ::= byte value ::= byte size ::= digit digit n ::= digit ::= 0 n Exemple 4Topr105Topr212Hidx 1000RRadistopScrypcryp 113

114 Signature embarquée, exemple <form action="http://jfod.cnam.fr" method="post"> <p><input type="submit" name="b1" value=b1> <input type="text" size="20" name="t1"> </p> </form> est compressé en 2SB1B1T120 2 le nombre significatifs de caractères pour les champs name et value S type="submit" B1 name="b1" B1 value="b1" T type="text" T1 name="t1" 20 size="20" 114

115 Signatures embarquées Un utilitaire en Compression/Vérification Décompression d'une signature retournée par une JavaCard Le source Java (en byte[]) Le contenu d un fichier (en byte[]) 115

116 Compression/Vérification 116

117 Compression/Vérification 117

118 Décompression d'une signature retournée par une JavaCard 118

119 Le source Java (en byte[]) 119

120 Déclencher une servlette sur un JiB private synchronized String execute(string servletprefix, byte method, byte[] params) throws OneWireException{ ResponseAPDU response; String result = null; String appletname = extractappletname(servletprefix); OneWireContainer16 jib = (OneWireContainer16)table.get(servletPrefix); if(jib==null) throw new OneWireException("pas de servlettes, ce nom : " + servletprefix); DSPortAdapter adapter = jib.getadapter(); adapter.beginexclusive(true); adapter.setsearchalldevices(); adapter.targetallfamilies(); adapter.setspeed(dsportadapter.speed_regular); } if (jib.select(appletname).getsw() == 0x9000) { response = jib.sendapdu(new CommandAPDU((byte)0x0, method, (byte)0x0, (byte)0x0, params, (byte)0),0); if (response.getsw() == 0x9000){ if(response.getdata()==null) result = new String("success"); else result = new String(response.getData()); }else{ int errorcode = response.getsw(); result = "code failure : 0x" + Integer.toString(errorCode,16) + " soit : " + JibServletList.decodeSW(errorCode); } } adapter.endexclusive(); return result; 120

121 Côté servlette, schéma de programme A lire deux extraits de l ib-ide de dallas et une présentation de Sun La structure d une Applet Et La structure d une Servlette idem Une seule classe CLA = 0x00 à choisir (e.g. 0xA0 GSM) Un seul point d entrée Même type de paramètres 121

122 Côté servlette, quelques utilitaires Un seul point d entrée Extraction des paramètres en entrée valeur est un texte, extrairebytearray public static byte[] extrairebytearray(byte[] apdudata, byte[] param) valeur2 est un entier! extraireint public static byte[] extraireint(byte[] apdudata, byte[] param) Renvoi de paramètres Utilitaires de conversion, classe Conversions public static byte[] convertinteger(int num) public static byte[] converthexa(short num) public static byte[] convertserialid(byte[] ID) 122

123 Paramètres de type CGI Paramètres envoyés à la Servlette Idem (ou presque) aux Paramètres en Brazil Paramètres PC(Brazil) -> Hashtable table = request.getquerydata(); Paramètres javacard apdudata ==table.tostring().getbytes(); 123

124 Un exemple //côté PC/hébergeur Hashtable table = request.getquerydata(); //côté JavaCard // apdudata = table.tostring().getbytes(); byte[] apdudata = new byte[]{ {, h, t, m, l, =, o, n,,,, t, e, x, t, e, =, t, e, s, t, } } 124

125 extraireint/javacard public static int extraireint(byte[] apdudata, byte[] param){ short i = 1;short lg = (short)param.length; // apdudata={param=valeur, param1=valeur1,...} while (i+lg < apdudata.length){ if(util.arraycompare(apdudata,i,param,(short)0,lg)==0 && apdudata[i+lg]==egal){ //if(parametres.arraycompare(apdudata,i,param,(short)0,lg)==0 && apdudata[i+lg]==egal){ //trouvé i+=lg +1; /* = */ boolean neg =false; int val=0; if(apdudata[i] == moins){i++;neg=true;} while(apdudata[i]!= virgule && apdudata[i]!= accoladef){ val = (apdudata[i]-'0') + val*10; i++; } if(neg)return -val; else return val; /* au suivant */ }else{ i += lg; while(apdudata[i]!= virgule && apdudata[i]!= accoladef){ i++; } i++;i++;// le blanc, ou l'accolade } } return 0; } 125

126 extrairebytearray/javacard public static byte[] extrairebytearray(byte[] apdudata, byte[] param){ short i = 1;short lg = (short)param.length; // apdudata={param=valeur, param1=valeur1,...} while (i+lg < apdudata.length){ if(util.arraycompare(apdudata,i,param,(short)0,lg)==0 && apdudata[i+lg]==egal){ i+=lg +1; /* = */ short debut = i; while(apdudata[i]!= virgule && apdudata[i]!= accoladef){ i++; } short fin = i; byte[] result = new byte[fin-debut]; Util.arrayCopy(apduData, debut, result, (byte)0, (byte)(fin-debut)); return result; /* au suivant */ }else{ i += lg; while(apdudata[i]!= virgule && apdudata[i]!= accoladef){ i++; } i++;i++;// le blanc, ou l'accolade } } return null; } 126

127 PC_V2 une applette/serveur Web

128 Une Applette/serveur pour un navigateur, un extrait public void run(){ ServerSocket listen = new ServerSocket(this.port); while(!local.isinterrupted()){ Socket socket = null; BufferedReader in = null; DataOutputStream out = null; try{ socket = listen.accept(); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out = new DataOutputStream( socket.getoutputstream()); String request = in.readline(); // requête GET en première ligne StringTokenizer st = new StringTokenizer(request); String token = st.nexttoken(); if(token.equals("get")){ String paramurl = st.nexttoken(); st = new StringTokenizer(paramUrl,"/&?= "); token = st.nexttoken(); if(token.equals(this.urlprefix)){ String observable = ""; String arg = ""; while (st.hasmoretokens()){ token = st.nexttoken(" &?="); if(token.equals(this.src)) observable = st.nexttoken(" &?="); if(token.equals(this.value)) arg = st.nexttoken(" &?="); } update(observable, arg); 128

129 Accès aux javacard depuis une application(1) HttpJavaCardClock2.java private static String javacardclock2(string urlsensor, Properties params) throws Exception{ URL url = new URL(urlSensor); URLConnection connection = url.openconnection(); connection.setdoinput(true); connection.setdooutput(true); PrintWriter out = new PrintWriter(connection.getOutputStream()); for(enumeration e = params.keys();e.hasmoreelements();){ String key = (String) e.nextelement(); String value = (String) params.get(key); out.print(key + "=" + value); if(e.hasmoreelements()) out.print("&"); } out.close(); // lecture en retour BufferedReader in = new BufferedReader( new InputStreamReader(connection.getInputStream())); String result= new String(""); String inputline = in.readline(); while(inputline!= null){ result = result + inputline; inputline = in.readline(); } in.close(); return result; } 129

130 Accès aux javacard depuis une application(2) HttpJavaCardClock2.java Properties props = new Properties(); props.setproperty("offset",integer.tostring(offset)); s = javacardclock2( "http://localhost:8765/javacard/monitor/ ea296/clock2/", props); System.out.println(" valeur retournée : " + s); props s 130

131 Mise en Œuvre d une Template <clock value> JavaCard ClockTemplate Hébergeur Date Client 131

132 La JavaCard retourne <clock valeur> }else{ int ofs = extraireint(apdudata, offset); if(ofs>0) clockoffset = ofs; // (re)définition de clockoffset souhaitée int timesec = Clock.getClock(clockOffset); byte[] time = Conversions.convertInteger(timeSec); if(extrairebytearray(apdudata, tag)!=null){ byte[] tag_clock={'<','c','l','o','c','k',' ',' ',' ',' ',' ', ',' ',' ',' ',' ',' ',' ',' ','>'}; Util.arrayCopy(time,(short)0,tag_clock,(short)7,(short)time.length); sendbytearray(apdu, tag_clock); }else{ sendbytearray(apdu, time); } } 132

133 L hébergeur transforme cette étiquette public class ClockTemplate extends Template { public boolean init(rewritecontext hr) { return true; } public void tag_clock(rewritecontext hr){ int jibtime = Integer.parseInt(hr.getArgs().trim()); Date d = new Date(jibTime*1000L); } String date = DateFormat.getDateInstance( DateFormat.SHORT,Locale.FRANCE).format(d) + "-" + DateFormat.getTimeInstance( DateFormat.MEDIUM,Locale.FRANCE).format(d); hr.append(date); hr.killtoken(); 133

134 La configuration et le résultat filtre.class=sunlabs.brazil.filter.filterhandler filtre.handler=javacard filtre.filters=filtreget filtreclock filtreget.class=sunlabs.brazil.filter.templatefilter filtreget.templates=sunlabs.brazil.template.settemplate filtreclock.class=sunlabs.brazil.filter.templatefilter filtreclock.templates=cnam.ibutton.clocktemplate 134

135 Un autre exemple <sendmail.. Une servlette de la JavaCard déclenche l envoi d un mél <tag>sendmail body="accès à <get URLHandler>" subject="accès JiB" /</tag> Note : à essayer en 135

136 Encore un exemple <sql.. Une servlette de la JavaCard déclenche une requête SQL, le résultat en HTML est envoyé au client <sql prefix=liste> select DATE,TP,NOTE from TP_CDI where MATRICULE='I044733' and tp like 'tp_' order by TP</sql> <table border="2"> <caption><b>mes notes en tp_cdi</b></caption> <tr><foreach name=field list="date TP NOTE"> <td><b><property name=field></b> </td> </foreach></tr> <foreach name=index property=liste.rows> <tr> <foreach name=field list="date TP NOTE"> <td><property name="liste.tp_cdi.${field}.${index}"></td> </foreach> </tr> </foreach> </table> Note : à essayer en 136

137 <sql, «mes» notes en TP_CDI/JFOD La configuration de l hébergeur filtre.class=sunlabs.brazil.filter.filterhandler filtre.handler=javacard filtre.filters=bsl get clock mail BSL.class=sunlabs.brazil.filter.TemplateFilter BSL.templates=sunlabs.brazil.template.SetTemplate \ sunlabs.brazil.sql.sqltemplate \ sunlabs.brazil.template.bsltemplate #la base est installée sur vivaldi... les données JFOD de BSL.query=query. BSL.sessionTable=data BSL.headers=header. BSL.driver=org.hsqldb.jdbcDriver BSL.url=jdbc:hsqldb:http://vivaldi.cnam.fr:81/BASE_EAD BSL.sqlPrefix=param. param.user=sa param.password= 137

138 <notify un événement> Cette balise engendre une notification à tous les observateurs du système! Évènement initié par une javacard exemple : 138

139 Les cookies en Java(1) Ouverture de la connexion, le cookie est repéré URL url = new URL(urlString); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.getresponsemessage(); This.cookieID = conn.getheaderfield(cookie_from_server); int index = this.cookieid.indexof(";"); if(index >= 0) this.cookieid = this.cookieid.substring(0, index); // cookieid est de la forme cookieid=5k0jfbno6h3bcuc7sam5k Avec private static final String COOKIE_FROM_SERVER = "Set-Cookie"; Et cookieid une variable d instance 139

140 Les cookies en Java(2) Envoi du Cookie lors d une nouvelle connexion URL url = new URL(urlString); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setdooutput(true); conn.setinstancefollowredirects(false); conn.setrequestproperty(cookie_to_server, cookieid); conn.getresponsemessage(); return connection.getinputstream(); Avec private static final String COOKIE_TO_SERVER = "Cookie"; 140

141 Les commandes compilation et édition des liens Notice en Et Compilation javac -verbose -target 1.1 -classpath.;d:/ib-ide/classes/ibutton52.jar; d:/ib-ide/classes/base-core.jar;d:/ib-ide/classes/selector.jar EnGras2.java Génération du fichier téléchargeable java -cp buildjibblet.jar;d:/ib-ide/classes/ibutton52.jar dallas.buildjiblet -f EnGras2.class -o EnGras2.jib -d d:/ib-ide/classes/jib52.jibdb Téléchargement avec cet utilitaire déc 2003 PC={lmi80.cnam.fr:8765 vivaldi.cnam.fr:8765 lmi80.cnam.fr:8765/esiee/} 141

142 La page d accueil 142

file:///d:/wd/ens/in413/0708/les_tp/tp6_reseau/index.html TP6 Thèmes du TP : Serveurs de type "sessions"

file:///d:/wd/ens/in413/0708/les_tp/tp6_reseau/index.html TP6 Thèmes du TP : Serveurs de type sessions 1 sur 8 12/10/2007 15:50 TP6 Thèmes du TP : Serveurs de type "sessions" Architecture web et déploiement : une introduction httpunit : première utilisation Préambule : Les classes de tests unitaires présentes

Plus en détail

Java Avancé - Cours 1 Solution des exercices

Java Avancé - Cours 1 Solution des exercices Solution des exercices Java Avancé - Cours 1 1/6 Java Avancé - Cours 1 Solution des exercices Liste des exercices: Exercice 1.1 Q1 On utilise les deux constructeurs suivants : java.io.inputstreamreader

Plus en détail

La technologie Java Card TM

La technologie Java Card TM Présentation interne au CESTI La technologie Java Card TM sauveron@labri.u-bordeaux.fr http://dept-info.labri.u-bordeaux.fr/~sauveron 8 novembre 2002 Plan Qu est ce que Java Card? Historique Les avantages

Plus en détail

TP2 : Interaction avec la carte à puce à l aide d un programme Java sous Windows

TP2 : Interaction avec la carte à puce à l aide d un programme Java sous Windows TP2 : Interaction avec la carte à puce à l aide d un programme Java sous Windows Samia BOUZEFRANE http://cedric.cnam.fr/~bouzefra/pfsem10-11.html samia.bouzefrane@cnam.fr Laboratoire CEDRIC Chaire Systèmes

Plus en détail

Applet, Servlet et JSP : des pages Web en action. Philippe Mabilleau ing.

Applet, Servlet et JSP : des pages Web en action. Philippe Mabilleau ing. Carrefour de l information Applet, Servlet et JSP : des pages Web en action Philippe Mabilleau ing. 5 novembre 2002 Des pages Web en action Le Web Des pages Web interactives Applet : de l action du coté

Plus en détail

Les formations. Développeur Logiciel. ENI Ecole Informatique

Les formations. Développeur Logiciel. ENI Ecole Informatique page 1/5 Titre professionnel : Reconnu par l Etat de niveau III (Bac), inscrit au RNCP (arrêté du 12/10/07, J.O. n 246 du 23/10/07) (32 semaines) Unité 1 : Structurer une application 6 semaines Module

Plus en détail

WWW - Intérêts du Web

WWW - Intérêts du Web WWW - Intérêts du Web client universel facilité d'emploi standards ouverts intégration des autres services Internet extensibilité du système faibles coûts logiciel et réseau utilisation au sein d'une entreprise

Plus en détail

Mise en œuvre des serveurs d application

Mise en œuvre des serveurs d application Nancy-Université Mise en œuvre des serveurs d application UE 203d Master 1 IST-IE Printemps 2008 Master 1 IST-IE : Mise en œuvre des serveurs d application 1/54 Ces transparents, ainsi que les énoncés

Plus en détail

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web. ASTRIUM - Toulouse JEE Formation 2013 TP JEE Développement Web en Java Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web. Figure 1 Architecture

Plus en détail

TP SPRING. https ://lipn.univ-paris13.fr/ fortier/enseignement/spring/tp/

TP SPRING. https ://lipn.univ-paris13.fr/ fortier/enseignement/spring/tp/ Institut Galilée Année 2015-2016 TP SPRING Programmation et Logiciels sûrs Master 2 PLS Résumé L objectif de ce TP est d être capable de réaliser une application Java de gestion de location de véhicules,voiture

Plus en détail

JDBC. Daniel Tschirhart : Programmation Java V1.35 1.1

JDBC. Daniel Tschirhart : Programmation Java V1.35 1.1 JDBC Daniel Tschirhart : Programmation Java V1.35 1.1 JDBC JDBC est l'acronyme de Java DataBase Connectivity et désigne une API définie par Sun pour permettre un accès aux bases de données avec Java Accès

Plus en détail

RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005

RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005 Oussama ELKACHOINDI Wajdi MEHENNI RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005 Sommaire I. Préliminaire : Notice d exécution et mode opératoire...4 II. Architecture globale de l application...5

Plus en détail

Sécurite Web. Xavier Tannier xavier.tannier@limsi.fr. Yann Jacob yann.jacob@lip6.fr

Sécurite Web. Xavier Tannier xavier.tannier@limsi.fr. Yann Jacob yann.jacob@lip6.fr Sécurite Web Xavier Tannier xavier.tannier@limsi.fr Yann Jacob yann.jacob@lip6.fr Généralités 80 % des sites contiennent au moins une faille de sécurité 24 familles de failles différentes : on ne présente

Plus en détail

Ecole Nationale Supérieure des Télécommunications Les outils XML

Ecole Nationale Supérieure des Télécommunications Les outils XML Ecole Nationale Supérieure des Télécommunications Les outils XML Page 1 sur 13 SOMMAIRE 1 Introduction 3 2 Parseur XML et processeur XSLT 4 2.1 Le Parseur XML v2 4 2.1.1 Les API DOM et SAX 4 2.1.2 Le parseur

Plus en détail

Manuel d intégration du service AByster

Manuel d intégration du service AByster Manuel d intégration du service AByster PHP API Version 1.0 11 février 2013 www.abyster.com 1 Table des matières 01. Objet... 3 02. Définitions... 3 03. Introduction... 4 04. Le Core... 5 04.1 Organisation

Plus en détail

Cours Bases de données 2ème année IUT

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours 6 : JDBC : ou comment lier ORACLE avec Java 1ère partie Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Introduction 2 les étapes de la connexion

Plus en détail

Cours 1. Contenu du cours : " Premières applications. " Compilation, Exécution, Chemin. " Affichage et saisie. " Types de données. " Flux de contrôle

Cours 1. Contenu du cours :  Premières applications.  Compilation, Exécution, Chemin.  Affichage et saisie.  Types de données.  Flux de contrôle Cours 1 1 Contenu du cours : " Premières applications " Compilation, Exécution, Chemin " Affichage et saisie " Types de données " Flux de contrôle " Applets " Arrays " OO de base Edition Le fichier texte

Plus en détail

Familiarisation avec Eclipse / Netbeans

Familiarisation avec Eclipse / Netbeans Institut Galilée LEE Année 011-01 Master T.P. 0 Familiarisation avec Eclipse / Netbeans Lien important contenant le pdf du cours et du TP, et ensuite des sources : http://www-lipn.univ-paris13.fr/~fouquere/mpls

Plus en détail

TP programmation Internet en JAVA

TP programmation Internet en JAVA TP programmation Internet en JAVA préparé par P. Bakowski Ce TP nécessite quelques préparations du logiciel. Vous pouvez utiliser l environnement NetBeans avec le pack SDK Java SE Le site polytech2go.fr

Plus en détail

L3 informatique TP n o 2 : Les applications réseau

L3 informatique TP n o 2 : Les applications réseau L3 informatique TP n o 2 : Les applications réseau Sovanna Tan Septembre 2009 1/20 Sovanna Tan L3 informatique TP n o 2 : Les applications réseau Plan 1 Transfert de fichiers 2 Le Courrier électronique

Plus en détail

Projet de Veille Technologique

Projet de Veille Technologique Projet de Veille Technologique Programmation carte à puce - JavaCard Ing. MZOUGHI Ines (i.mzoughi@gmail.com) Dr. MAHMOUDI Ramzi (mahmoudr@esiee.fr) TEST Sommaire Programmation JavaCard Les prérequis...

Plus en détail

Application Web et J2EE

Application Web et J2EE Application Web et J2EE Servlet, JSP, Persistence, Méthodologie Pierre Gambarotto Département Informatique et Math appli ENSEEIHT Plan Introduction 1 Introduction Objectfis

Plus en détail

JACi400 Génération & JACi400 Développement

JACi400 Génération & JACi400 Développement JACi400 Génération & JACi400 Développement Une solution pour développer rapidement des applications WebSphere pour votre iseries directement en RPG ou Cobol. "After spending time with SystemObjects and

Plus en détail

Web Tier : déploiement de servlets

Web Tier : déploiement de servlets Web Tier : déploiement de servlets 1 / 35 Plan 1 Introduction 2 Servlet : Principe de fonctionnement 3 Création et développement sur un serveur JEE 4 Quelques méthodes de l API des servlets 5 Utilisation

Plus en détail

objectif : plan : Java, CORBA et RMI A. Le Grand,1997 1 JAVA, CORBA et RMI

objectif : plan : Java, CORBA et RMI A. Le Grand,1997 1 JAVA, CORBA et RMI JAVA, CORBA et RMI objectif : développer des applications client/serveur incluant des objets répartis Java / CORBA : client/serveur hétérogènes Java / RMI : client/serveur homogènes plan : l architecture

Plus en détail

Inf340 Systèmes d information. Deuxième site : approche MVC

Inf340 Systèmes d information. Deuxième site : approche MVC Inf340 Systèmes d information Deuxième site : approche MVC Objectifs Objectif : Reprendre le site précédent en utilisant le patron de conception Modèle Vue Contrôleur. Comprendre l apport d un framework

Plus en détail

Résumé Introduction Programmation Java

Résumé Introduction Programmation Java Résumé Introduction Programmation Java Concepts Un programme : séquence, test conditionnel, boucles. Objets : Les objets Java modélisent les objets d un problème donné Classe : Les objets sont crées à

Plus en détail

Programmation servlet

Programmation servlet Programmation servlet Olivier Aubert 1/23 Références http://developer.java.sun.com/developer/onlinetraining/servlets/fundamenta http://www.servlets.com http://java.sun.com/products/jsp/index.html http://www.servletcentral.com/

Plus en détail

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java. Note technique W4 Engine Extension SSO Java Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java. 1 Présentation 3 2 Custom SSO Java 4 3 Bilan 10 Sommaire Référence

Plus en détail

RICM 4 ème année 12/1/2012

RICM 4 ème année 12/1/2012 RICM 4 ème année 12/1/2012 Examen de Systèmes Répartis Durée : 2h, Documents autorisés à l exception des livres. Le barème est indicatif. Partie A Applications Web Question 1. Dans un répertoire contenant

Plus en détail

PHP. virginie.sans@irisa.fr http://perso.univ-rennes1.fr/virginie.sans/pwb. Internet et HTML

PHP. virginie.sans@irisa.fr http://perso.univ-rennes1.fr/virginie.sans/pwb. Internet et HTML PHP virginie.sans@irisa.fr http://perso.univ-rennes1.fr/virginie.sans/ BUR Internet et HTML PHP, qu'est-ce que c'est? Un langage pour la programmation du serveur Permet d'inclure des parties programmées

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée Virtual Server de Microsoft

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée Virtual Server de Microsoft Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée Virtual Server de Microsoft Virtual Server 2005 R2 Network Shutdown Module Système Principal (hôte) Virtual Server

Plus en détail

Principes d'utilisation des systèmes de gestion de bases de données

Principes d'utilisation des systèmes de gestion de bases de données Principes d'utilisation des systèmes de gestion de bases de données JDBC L3 Informatique Emmanuel Waller, LRI, Orsay Université Paris Sud le mode programme JDBC JDBC : qu'est ce que c'est? Avantages? devant

Plus en détail

Les solutions de paiement CyberMUT (Crédit Mutuel) et P@iement CIC. Qui contacter pour commencer la mise en place d une configuration de test?

Les solutions de paiement CyberMUT (Crédit Mutuel) et P@iement CIC. Qui contacter pour commencer la mise en place d une configuration de test? Les solutions de paiement CyberMUT (Crédit Mutuel) et P@iement CIC Qui contacter pour commencer la mise en place d une configuration de test? CyberMUT Paiement - Paiement CIC Commerce Electronique mailto:centrecom@e-i.com

Plus en détail

Programmation du Web : Présentation du Web dynamique

Programmation du Web : Présentation du Web dynamique Programmation du Web : Présentation du Web dynamique Jean-Baptiste Vioix (Jean-Baptiste.Vioix@u-bourgogne.fr) IUT de Dijon-Auxerre - LE2I http://jb.vioix.free.fr 1-8 Présentation Nécessité du web dynamique

Plus en détail

Programmation orientée objet en langage JAVA

Programmation orientée objet en langage JAVA Programmation orientée objet en langage JAVA Connexion à une base de données avec JDBC Claude Duvallet Université du Havre UFR Sciences et Techniques 25 rue Philippe Lebon - BP 540 76058 LE HAVRE CEDEX

Plus en détail

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 2 : JUnit

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 2 : JUnit iut ORSAY DUT Informatique Département Informatique 2008 / 2009 Travaux Pratiques n o 2 : JUnit Nom(s) : Groupe : Date : Objectifs : Apprendre à vérifier une implantation à l aide de tests unitaires sous

Plus en détail

Le réseau. Sommaire. Ce chapitre concerne les classes du package java.net qui permettent de travailler avec le réseau au niveau applicatif.

Le réseau. Sommaire. Ce chapitre concerne les classes du package java.net qui permettent de travailler avec le réseau au niveau applicatif. Le réseau Ce chapitre concerne les classes du package java.net qui permettent de travailler avec le réseau au niveau applicatif. Sommaire 1.LES URL... 2 1.1DÉFINITIONS...2 1.2LES CLASSES URL ET URLCONNECTION...

Plus en détail

Java DataBaseConnectivity

Java DataBaseConnectivity Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage

Plus en détail

Composite, Interpréteur et Visiteur

Composite, Interpréteur et Visiteur Composite, Interpréteur et Visiteur Cnam Paris jean-michel Douin Version du 10 Octobre 2003 Notes de cours java : les patterns Composite, Interpréteur et Visiteur Les notes et les Travaux Pratiques sont

Plus en détail

Première étape : Le modèle client/serveur avec le protocole TCP (client unique)

Première étape : Le modèle client/serveur avec le protocole TCP (client unique) École de technologie supérieure Responsable du cours : Hassan Zeino Département de génie logiciel et des TI Chargés de laboratoire : Fatna Belqasmi (A-3326) Session : Automne 2010 LOG610 - RÉSEAUX DE TELECOMMUNICATION

Plus en détail

Corrigé Syndic De Coproprietele Syndic Traditionnel

Corrigé Syndic De Coproprietele Syndic Traditionnel Corrigé Syndic De Coproprietele Syndic Traditionnel Listes des dossiers Barème indicatif Dossier 1 : Le système d information du syndic 38 Dossier 2 : L évolution du système d information 33 Dossier 3

Plus en détail

«Anatomie» d une application web Servlets - JDBC

«Anatomie» d une application web Servlets - JDBC «Anatomie» d une application web Servlets - JDBC Patrick REIGNIER - Philippe GENOUDUJF Février 2005 1 L application histogramme de notes HistoServlet HistoServlet HistogramModel HistogramModel (objet (objet

Plus en détail

Modèle Client-Serveur Partage du serveur entre clients

Modèle Client-Serveur Partage du serveur entre clients Modèle Client-Serveur Partage du serveur entre clients Un serveur peut servir plusieurs clients Vu d un client particulier client requête réponse serveur Vu du serveur Gestion des requêtes (priorité) Exécution

Plus en détail

Exécution des applications réparties

Exécution des applications réparties Exécution des applications réparties Programmation des Applications Réparties Olivier Flauzac URCA Master STIC-Informatique première année Olivier Flauzac (URCA) PAR : Exécution des applications réparties

Plus en détail

LISE 3. Template pour les mails. Version 1.0 du 13/04/2010. Etat : Validé

LISE 3. Template pour les mails. Version 1.0 du 13/04/2010. Etat : Validé Template pour les mails Version 1.0 du 13/04/2010 Etat : Validé SUIVI DES MODIFICATIONS Version Rédaction Description Vérification Date 1.0 A. Lesuffleur création du document 13/04/10 Document validé dans

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

Plan. Environnement Client/Serveur. Cours 7 JavaServer Pages (1) JSP. Programmation Web coté serveur

Plan. Environnement Client/Serveur. Cours 7 JavaServer Pages (1) JSP. Programmation Web coté serveur Plan Environnement Client/Serveur Cours 7 JavaServer Pages (1) kn@lri.fr 7.1 Principe 7.2 Rappels HTTP 7.3 Le serveur web Tomcat Programmation Web coté serveur JSP 2/28 (rappel) génération de pages-web

Plus en détail

J2EE. A.-E. Ben Salem. 09 Octobre 2011. LRDE and LIP6 1 / 15

J2EE. A.-E. Ben Salem. 09 Octobre 2011. LRDE and LIP6 1 / 15 J2EE A.-E. Ben Salem LRDE and LIP6 09 Octobre 2011 1 / 15 Plan 1 J2EE 2 Architecture Client/Serveur HTTP 3 Différence entre Web Statique et Web Dynamique 4 Web Dynamique avec un Serveur d applications

Plus en détail

Persistance en Php. Note : les problèmes d accès concurrents, de sécurité et de login sont laissés de côté.

Persistance en Php. Note : les problèmes d accès concurrents, de sécurité et de login sont laissés de côté. Persistance en Php Objectif : faire un site pour gérer des articles par catégorie. Chaque catégorie a un nom, chaque catégorie est constitué d articles (titre, auteur, texte), un article est dans une seule

Plus en détail

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France Développement d applications Internet et réseaux avec LabVIEW Alexandre STANURSKI National Instruments France Quelles sont les possibilités? Publication de données Génération de rapports et de documents

Plus en détail

Implémentée sous forme de JavaBean ou EJB, c est dans cette couche que l on retrouve l ensemble des traitements d une application.

Implémentée sous forme de JavaBean ou EJB, c est dans cette couche que l on retrouve l ensemble des traitements d une application. Introduction Nous allons parler, dans ce document consacré aux architectures multi-tiers en environnement J2EE, de 3 des cinq couches les plus représentatives. Faisons tout d'abord un petit rappel sur

Plus en détail

1 Le Parking revisité

1 Le Parking revisité Module I6 - Manipulation de threads II 13 décembre 2012 1 Le Parking revisité Une société de gestion de parkings de voitures souhaite mettre en place un système automatique d affichage en temps réel de

Plus en détail

Java et les bases de données

Java et les bases de données Michel Bonjour http://cuiwww.unige.ch/~bonjour CENTRE UNIVERSITAIRE D INFORMATIQUE UNIVERSITE DE GENEVE Plan Introduction JDBC: API SQL pour Java - JDBC, Java, ODBC, SQL - Architecture, interfaces, exemples

Plus en détail

Extensions à OpenSSO :

Extensions à OpenSSO : Extensions à : compatibilité et gestion des autorisations Philippe BEUTIN DSI Grenoble-Universit Universités Thierry AGUEDA Univ.. Pierre-Mend Mendès-France Gérard FORESTIER Univ.. Joseph-Fourier Le-Quyen

Plus en détail

Introduction à JDBC. Accès aux bases de données en Java

Introduction à JDBC. Accès aux bases de données en Java Introduction à JDBC Accès aux bases de données en Java Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Eric.Cariou@univ-pau.fr 1 Introduction JDBC : Java Data Base Connectivity

Plus en détail

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement Guillaume HARRY l Contenu sous licence Creative Commons CC-BY-NC-ND Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement P. 2 1. Introduction 2.

Plus en détail

Analyse des besoins logiciels

Analyse des besoins logiciels Analyse des besoins logiciels Encadrement et supervision Annie Danzart Jean-Claude Moissinac Equipe de développement Mohamed Anouar Benaissa anouar@benaissa.net Anthony Rabiaza rabiaza@enst.fr Déva Pajaniaye

Plus en détail

QCM 2. Informatique générale. 1. Le nombre binaire 1011 vaut en décimal : a) 7 b) 9 c) 33 d) 11. 2. Le nombre qui suit le nombre 4 en base 5 est :

QCM 2. Informatique générale. 1. Le nombre binaire 1011 vaut en décimal : a) 7 b) 9 c) 33 d) 11. 2. Le nombre qui suit le nombre 4 en base 5 est : QCM 2 Informatique générale 1. Le nombre binaire 1011 vaut en décimal : a) 7 b) 9 c) 33 d) 11 2. Le nombre qui suit le nombre 4 en base 5 est : a) 10 b) 5 c) 0 d) A 3. Combien y'a t-il d'octets dans un

Plus en détail

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige.

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige. : JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java Michel Bonjour http://cuiwww.unige.ch/~bonjour Plan JDBC: API bas niveau pour l accès aux BD (SQL) - Introduction - JDBC et : Java, ODBC, SQL

Plus en détail

Travaux pratiques. Protocoles de la couche transport et de la couche applications

Travaux pratiques. Protocoles de la couche transport et de la couche applications Travaux pratiques Protocoles de la couche transport et de la couche applications Objectif Ce laboratoire se veut une introduction aux protocoles de la couche transport et de la couche application du modèle

Plus en détail

Travaux Pratiques de Réseaux DUT 2 eme année

Travaux Pratiques de Réseaux DUT 2 eme année Travaux Pratiques de Réseaux DUT 2 eme année Copyright c Emmanuel Nataf Chapitre 1 Programmation réseaux 1.1 Communication avec UDP - package java.net Le but de ce TP est de réaliser deux programmes permettant

Plus en détail

Plan du travail. 2014/2015 Cours TIC - 1ère année MI 86

Plan du travail. 2014/2015 Cours TIC - 1ère année MI 86 Plan du travail Chapitre 1: Internet et le Web Chapitre 2: Principes d Internet Chapitre 3 : Principaux services d Internet Chapitre 4 : Introduction au langage HTML 2014/2015 Cours TIC - 1ère année MI

Plus en détail

Université Joseph Fourier UFR IMA Module Système. TP Systèmes n 1 Programmation concurrente

Université Joseph Fourier UFR IMA Module Système. TP Systèmes n 1 Programmation concurrente TP Systèmes n 1 Programmation concurrente Titre Simulation du comportement de processus producteurs et de processus consommateurs avec tampon intermédiaire borné. Organisation Binôme Durée de réalisation

Plus en détail

PHP & BD. PHP & Bases de données. Logiciels & matériels utilisés. Bases de données et Web

PHP & BD. PHP & Bases de données. Logiciels & matériels utilisés. Bases de données et Web PHP & Bases de données La quantité de données utilisée par certains sites web nécessite l'utilisation d'une base de données Il faut donc disposer d'un SGBD (mysql, postgresql, oracle, ) installé sur un

Plus en détail

Licence d'informatique 2004-2005 Examen Programmation orientée objet Juin 2005

Licence d'informatique 2004-2005 Examen Programmation orientée objet Juin 2005 Licence d'informatique 2004-2005 Examen Programmation orientée objet Juin 2005 Durée de l'épreuve : 2 heures TRÈS IMPORTANT : respectez l'ordre des questions. La lisibilité sera un critère important pour

Plus en détail

La programmation réseau. Java

La programmation réseau. Java Chapitre 7 : Java et les réseaux La programmation réseau Java Rémy Courdier 1996-2003 - Java Réseau - Version du cours 3.0 1 Sommaire La programmation réseau La classe URL Les Sockets TCP/IP et les principaux

Plus en détail

Correction langage Java

Correction langage Java MINISTÈRE DE L ÉCOLOGIE, DU DÉVELOPPEMENT DURABLE, DES TRANSPORTS ET DU LOGEMENT EXAMEN PROFESSIONNEL DE VÉRIFICATION D APTIDUDE AUX FONCTIONS DE PROGRAMMEUR Session 2010 Correction langage Java Langage:

Plus en détail

Module BD et sites WEB

Module BD et sites WEB Module BD et sites WEB Cours 8 Bases de données et Web Anne Doucet Anne.Doucet@lip6.fr 1 Le Web Architecture Architectures Web Client/serveur 3-tiers Serveurs d applications Web et BD Couplage HTML-BD

Plus en détail

Applications orientées données (NSY135)

Applications orientées données (NSY135) Applications orientées données (NSY135) 2 Applications Web Dynamiques Auteurs: Raphaël Fournier-S niehotta et Philippe Rigaux (philippe.rigaux@cnam.fr,fournier@cnam.fr) Département d informatique Conservatoire

Plus en détail

Programmation carte à puce CH4: La norme ISO 7816

Programmation carte à puce CH4: La norme ISO 7816 Programmation carte à puce Plan du chapitre La norme ISO 7816 ISO 7816-1 ISO 7816-2 ISO 7816-3 ISO 7816-4 111 Introduction - La carte à puce est aujourd hui présente dans plusieurs secteurs : transport,

Plus en détail

Introduction Fonctionnement L API Servlet SERVLET. Claude Duvallet 1/32

Introduction Fonctionnement L API Servlet SERVLET. Claude Duvallet 1/32 Claude Duvallet Université du Havre UFR Sciences et Techniques 25 rue Philippe Lebon - BP 540 76058 LE HAVRE CEDEX Claude.Duvallet@gmail.com http://litis.univ-lehavre.fr/ duvallet/ Claude Duvallet 1/32

Plus en détail

Données et communications en Java

Données et communications en Java Données et communications en Java Programmation des applications réparties Olivier Flauzac Master EEAMI-Informatique première année Olivier Flauzac (URCA) Données et communications en Java EEAMI-INFO 1

Plus en détail

Web et présentation d information spatiale

Web et présentation d information spatiale Université de La Rochelle LUP-SIG 2004-2005 Programmation SIG et Internet Cartographique Web et présentation d information spatiale Moteurs de recherche et formulaires HTML Jean-Michel FOLLIN jmfollin@univ-lr.fr

Plus en détail

TD n 1 : Architecture 3 tiers

TD n 1 : Architecture 3 tiers 2008 TD n 1 : Architecture 3 tiers Franck.gil@free.fr 27/10/2008 1 TD n 1 : Architecture 3 tiers 1 INTRODUCTION Ce TD, se propose de vous accompagner durant l installation d un environnement de développement

Plus en détail

Déclaration des mouvements de main-d œuvre par échange de données informatisées. Informations de mise en œuvre

Déclaration des mouvements de main-d œuvre par échange de données informatisées. Informations de mise en œuvre Ministère du Travail, des Relations sociales, de la Famille et de la Solidarité Déclaration des mouvements de main-d œuvre par échange de données informatisées Informations de mise en œuvre Mai 2008 1/11

Plus en détail

TP WEBSERVICES. 1 Pré-requis. 1.1 L environnement de développement. 1.2 Les librairies nécessaires 1.3 SOAPUI

TP WEBSERVICES. 1 Pré-requis. 1.1 L environnement de développement. 1.2 Les librairies nécessaires 1.3 SOAPUI Institut Galilée Année 2014-2015 TP WEBSERVICES Programmation et Logiciels sûrs Master 2 PLS Résumé Ce TP s appuie sur le cours de C. Fouqueré traitant des Environnements et Langage Évolués, ainsi que

Plus en détail

Examen de Réseau Licence Licence GMI Maîtrise (Tous documents autorisés)

Examen de Réseau Licence Licence GMI Maîtrise (Tous documents autorisés) Examen de Réseau Licence Licence GMI Maîtrise (Tous documents autorisés) Contexte du sujet : Une entreprise spécialisée dans la production de matériel de mesure et d analyse météorologique propose des

Plus en détail

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS) PHP et mysql php_mysql PHP et mysql Code: php_mysql Originaux url: http://tecfa.unige.ch/guides/tie/html/php-mysql/php-mysql.html url: http://tecfa.unige.ch/guides/tie/pdf/files/php-mysql.pdf Auteurs et

Plus en détail

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand Centrale Réseaux

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux Formation Webase 5 Ses secrets, de l architecture MVC à l application Web Adrien Grand Centrale Réseaux Sommaire 1 Obtenir des informations sur Webase 5 2 Composants de Webase 5 Un

Plus en détail

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 7 : RMI

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 7 : RMI iut ORSAY DUT Informatique Département Informatique 2008 / 2009 Travaux Pratiques n o 7 : RMI Nom(s) : Groupe : Date : Objectifs : savoir créer des applications client-serveur mettant en jeu des machines

Plus en détail

Java EE. Grégory Cuellar, Julien Goullon. 1 er octobre 2007. gregory.cuellar@bull.net. julien.goullon@9business.fr

Java EE. Grégory Cuellar, Julien Goullon. 1 er octobre 2007. gregory.cuellar@bull.net. julien.goullon@9business.fr Grégory Cuellar Julien Goullon gregory.cuellar@bull.net julien.goullon@9business.fr 1 er octobre 2007 1 Généralité 2 / 54 Pourquoi? Historique Les alternatives Les composants 2 Architecture n-tiers 3 JEE

Plus en détail

Définition des Webservices Ordre de paiement par email. Version 1.0

Définition des Webservices Ordre de paiement par email. Version 1.0 Définition des Webservices Ordre de paiement par email Version 1.0 Rédaction, Vérification, Approbation Rédaction Vérification Approbation Nom Date/Visa Nom Date/Visa Nom Date/Visa Historique du document

Plus en détail

Corrigé du TP Carte SIM

Corrigé du TP Carte SIM Corrigé du TP Carte SIM Outil GScriptor Il faut d abord télécharger GScriptor : http://www.springcard.com/download/find.php?file=gscriptor et l installer sous Windows. Depuis Windows 7, il n est pas nécessaire

Plus en détail

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008 Introduction Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008 Forms 10g permet l utilisation du JAVA côté client et côté application

Plus en détail

Serveurs de noms Protocoles HTTP et FTP

Serveurs de noms Protocoles HTTP et FTP Nils Schaefer Théorie des réseaux (EC3a) Serveurs de noms Protocoles HTTP et FTP Théorie des réseaux (EC3a) Séance 7 Pourquoi DNS? Internet est une structure hiérarchique et arborescente de réseaux et

Plus en détail

Systèmes d'informations

Systèmes d'informations Systèmes d'informations C'est un ensemble d'outils pour stocker / gérer / diffuser des informations / des données Le stockage : Bases de données + SGDBR La gestion : Saisie, Mise à jour, Contrôle La diffusion

Plus en détail

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin Sécurité des sites Web Pas un cours un recueil du net INF340 Jean-François Berdjugin Vulnérabilité Définition (wikipédia) : Dans le domaine de la sécurité informatique, une vulnérabilité est une faiblesse

Plus en détail

Tp2 Emacs Développement Web

Tp2 Emacs Développement Web Tp2 Emacs Développement Web Les indications ci-dessous donnent les grandes lignes du développement. 1/ Evenement Ajax Jquery: Le code javascript jquery suivant permet d afficher un message dans un span

Plus en détail

Géocodage d une flotte de téléphones portables Principes (niveau débutants)

Géocodage d une flotte de téléphones portables Principes (niveau débutants) Géocodage d une flotte de téléphones portables Principes (niveau débutants) P. Lacomme (placomme@isima.fr) 1. Mise en place d un serveur web Étape 1 : Installer un serveur php. Par exemple : http://www.easyphp.org/

Plus en détail

Ala Eddine BEN SALEM. T.P. 2 Servlet

Ala Eddine BEN SALEM. T.P. 2 Servlet EPITA Ala Eddine BEN SALEM App-Ing2 J2EE T.P. 2 Servlet 1. Création d'un projet Web: A l'aide d'eclipse, créer un nouveau projet «sampleservlet» avec comme environnement d'exécution le serveur Tomcat installé

Plus en détail

Environnements de développement (intégrés)

Environnements de développement (intégrés) Environnements de développement (intégrés) JDT (débogage), outils d analyse statique Patrick Labatut labatut@di.ens.fr http://www.di.ens.fr/~labatut/ Département d informatique École normale supérieure

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Bypass et filtre sur les requêtes destinées à la servlet W4

Bypass et filtre sur les requêtes destinées à la servlet W4 Note technique W4 Engine Bypass et filtre sur les requêtes destinées à la servlet W4 Cette note technique décrit le filtre de contrôle du bypass de la servlet W4. Versions de W4 Engine concernées : 5.0

Plus en détail

Programmation Par Objets

Programmation Par Objets Programmation Par Objets Structures de données package java.util B. Carré Polytech Lille 1 Tableaux et structures de données Tableaux «Objets» taille fixe type des éléments : primitif (homogène) ou objets

Plus en détail

La carte à puce. Jean-Philippe Babau

La carte à puce. Jean-Philippe Babau La carte à puce Jean-Philippe Babau Département Informatique INSA Lyon Certains éléments de cette présentation sont issus de documents Gemplus Research Group 1 Introduction Carte à puce de plus en plus

Plus en détail

TX A081025: Délégation de l authentification pour les Services Web

TX A081025: Délégation de l authentification pour les Services Web TX A081025: Délégation de l authentification pour les Services Web Jérémy Vauchelle Enseignant: Aurélien Bénel Intervenants: Chao Zhou Arnaud Pagnier Plan 1. Présentation du sujet 2. Présentation du protocole

Plus en détail