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

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

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

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

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

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

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

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

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

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

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

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

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

Oracle 8i sous Linux

Oracle 8i sous Linux Oracle 8i sous Linux Gilles Briard Éditions Eyrolles ISBN : 2-212-09135-4 2000 16 Pilotes JDBC et SQLJ Dans ce chapitre nous allons aborder les points suivants : le standard JDBC, les pilotes JDBC d Oracle,

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

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

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

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

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

OpenCard Framework (OCF)

OpenCard Framework (OCF) OpenCard Framework (OCF) Didier DONSEZ Université Joseph Fourier Grenoble 1 Polytech Grenoble LIG/ADELE Didier.Donsez@imag.fr Motivations OCF : Open Card Framework Consortium initié par IBM Bull, Dallas

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

Plugin Payment-OnLine

Plugin Payment-OnLine Plugin Payment-OnLine Le plugin "Payment-Online" est un plugin technique dont l'objectif est de faciliter l'utilisation du paiement en ligne dans des applications Lutèce. Il se compose d'une librairie

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

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

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 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

TP 3 Programmation client/serveur

TP 3 Programmation client/serveur PhL - 20/03/2007 - Page 1 / 5 TP 3 Programmation client/serveur 1. Modèle de programmation 1. Introduction Au-dessus des protocoles de transmission, on peut construire des applications réparties reposant

Plus en détail

Programmation par sockets-java

Programmation par sockets-java 2A-SI 3 Prog. réseau et systèmes distribués 3.1 - Programmation par sockets-java Stéphane Vialle Stephane.Vialle@supelec.fr http://www.metz.supelec.fr/~vialle Support de cours élaboré avec l aide de l

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

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

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-2009 - Java Réseau - Version du cours 3.0 1 Sommaire La programmation réseau Rappel Réseau Couches réseau et TCP-IP Notion

Plus en détail

Installation d'un serveur Forefront Threat Management Gateway 2010 (TMG 2010)

Installation d'un serveur Forefront Threat Management Gateway 2010 (TMG 2010) Installation d'un serveur Forefront Threat Management Gateway 2010 (TMG 2010) Par LoiselJP Le 01/05/2013 1 Objectifs Ce document décrit le plus succinctement possible une manière, parmi d'autres, d installer

Plus en détail

Le Langage Java et le Monde des Objets

Le Langage Java et le Monde des Objets . p.1 Le Langage Java et le Monde des Objets Les principes de la modélisation Orientée Objet. Qu est-ce qu une classe?. Les types de base. Utiliser les classes. Les tentacules de Java. . p.2 Bibliographie

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

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

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

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

Programmation Web. Thierry Hamon

Programmation Web. Thierry Hamon 1/27 Programmation Web Thierry Hamon Bureau H202 - Institut Galilée Tél. : 33 1.48.38.35.53 Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR Léonard de Vinci 74, rue Marcel Cachin, F-93017 Bobigny

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

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

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

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

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

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

TD6 Initiation aux EJB3 avec Eclipse Ecriture d une application J2EE complète

TD6 Initiation aux EJB3 avec Eclipse Ecriture d une application J2EE complète TD6 Initiation aux EJB3 avec Eclipse Ecriture d une application J2EE complète Nous allons écrire une application J2EE qui permet dans un navigateur web de gérer des contacts. Pour cela, nous allons suivre

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

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

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

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

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

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

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

Projet M1 : Application P2P Hybride avec RMI

Projet M1 : Application P2P Hybride avec RMI Projet M1 : Application P2P Hybride avec RMI Applications Réparties 2008-2009 Université Paris VIII / Parcours SRM / M1 Sujet : Le but de ce projet est d'implémenter une application de partage de fichiers

Plus en détail

Programmation Android TP7 - WebServices

Programmation Android TP7 - WebServices 1. WebService Dans le TP6, les avis étaient stockés dans une base SQL. Cette semaine les n-uplets sont stockés sur une base de données externe gérée par un serveur HTTP sur lequel tournent des scripts

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

Java Avancé - Cours 2

Java Avancé - Cours 2 Java avancé - cours 2 1/8 Java Avancé - Cours 2 Plan 1 Communication entre objets 1 1.1 Motivation....................................................... 1 1.2 Relations entre le panier et le rayon.........................................

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

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

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

Interface De Service AIDL. Android Interface Definition Language

Interface De Service AIDL. Android Interface Definition Language Client Interface De Service Serviteur AIDL Android Interface Definition Language Client Serviteur Service Process Process IPC IPC Inter Process Communication... mais sur une même machine. pas entre plusieurs

Plus en détail

PHP /MySQL Interface d'accès aux BDDs PDO. Youssef CHAHIR

PHP /MySQL Interface d'accès aux BDDs PDO. Youssef CHAHIR PHP /MySQL Interface d'accès aux BDDs PDO Youssef CHAHIR 1 PLAN Architecture Interface phpmyadmin Créer une interface PHP/MySQL : Établir une connexion Exécuter une requête Gérer les erreurs Exploiter

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

Applications Web (Java)

Applications Web (Java) Applications Web (Java) Mohamed Quafafou 4A Polytech'Marseille mohamed.quafafou@univ-amu.fr 1 Servlets [Bases Exemples] 2 Java Servlets Java Servlet est une extension générique de serveur qui signifie

Plus en détail

Programmation - Java - Fiches du Langage. Marie Beurton-Aimar

Programmation - Java - Fiches du Langage. Marie Beurton-Aimar Programmation - Java - Fiches du Langage Marie Beurton-Aimar Fiche Numéro 1 1.1 Structure d un programme Java Toutes les instructions se terminent par un ; Le nom du fichier qui contient une classe doit

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

Technologies Web. Farah Benamara Zitoune Maître de conférences IRIT-UPS benamara@irit.fr

Technologies Web. Farah Benamara Zitoune Maître de conférences IRIT-UPS benamara@irit.fr Technologies Web Farah Benamara Zitoune Maître de conférences IRIT-UPS benamara@irit.fr Plan du cours Cours 1 : Introduction HTML/CSS Cours 2 : Introduction programmation web + javascirpt Cours 3 : Introduction

Plus en détail

Internet et applications dans l entreprise (3) Serveur Tomcat et pages JSP

Internet et applications dans l entreprise (3) Serveur Tomcat et pages JSP Licence professionnelle «Management des organisations» Option «Systèmes d information et Réseaux» Internet et applications dans l entreprise (3) Serveur Tomcat et pages JSP O. Auzende 2010-2011 Servlets

Plus en détail

Cours 1 : Introduction Générale + Objet I

Cours 1 : Introduction Générale + Objet I Organisation du cours Équipe pédagogique DUT Informatique S3 - Programmation Java Jean-Claude MARTIN MARTIN@LIMSI.FR Cours 1 : Introduction Générale + Objet I Jean-Claude MARTIN (Responsable, Cours, TD

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

Partie 2.2: Servlet et Tomcat

Partie 2.2: Servlet et Tomcat Partie 2.2: Servlet et Tomcat 1 Plan du cours Servlets Présentation Exemple 2 Plan du cours Tomcat Des servlets à Tomcat: pourquoi Tomcat? Architecture Tomcat Installation et configuration de Tomcat Configuration

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

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

Programmation Java Avancée

Programmation Java Avancée Programmation Java Avancée Module RPCI01 Département R&T IUT de Villetaneuse 2 novembre 2015 Département R&T Programmation Java Avancée 2 novembre 2015 1 / 74 Plan du cours 1 La gestion des exceptions

Plus en détail

TP Projet Informatique : Persistance en Php et prise en main GIT / Atlassian

TP Projet Informatique : Persistance en Php et prise en main GIT / Atlassian TP Projet Informatique : Persistance en Php et prise en main GIT / Atlassian Objectif : faire un site pour gérer des articles par catégorie. Chaque catégorie a un nom, chaque catégorie est constitué d

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

Java et Objet. Amélie Lambert 2014-2015. Amélie Lambert 2014-2015 1 / 42

Java et Objet. Amélie Lambert 2014-2015. Amélie Lambert 2014-2015 1 / 42 Java et Objet Amélie Lambert 2014-2015 Amélie Lambert 2014-2015 1 / 42 Chapitre 8 Développement d applications Web Amélie Lambert 2014-2015 2 / 42 Plan du cours Typologie des applications Web Architecture

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

CORBA avec OpenORB. Samir Torki et Patrice Torguet

CORBA avec OpenORB. Samir Torki et Patrice Torguet CORBA avec OpenORB Samir Torki et Patrice Torguet 1 Présentation de CORBA CORBA (Common Object Request Broker Architecture) est un standard décrivant une architecture pour la mise en place d objets distribués.

Plus en détail

TP d initiation aux systèmes et applications répartis

TP d initiation aux systèmes et applications répartis TP d initiation aux systèmes et applications répartis Grégory Mounié, Simon Nieuviarts, Sébastien Viardot Au début de l informatique, on exploitait simplement des ordinateurs. Maintenant, on construit

Plus en détail

Samia BOUZEFRANE & Khaled GARRI http://cedric.cnam.fr/~bouzefra/pfsem09-10.html

Samia BOUZEFRANE & Khaled GARRI http://cedric.cnam.fr/~bouzefra/pfsem09-10.html ED 1 : Interaction avec la carte à puce selon les protocoles ISO 7816-3 et ISO 7816-4 Samia BOUZEFRANE & Khaled GARRI http://cedric.cnam.fr/~bouzefra/pfsem09-10.html Exemple de la carte bancaire 1 Partie

Plus en détail

Projet de programmation (IK3) : TP n 1 Correction

Projet de programmation (IK3) : TP n 1 Correction Projet de programmation (IK3) : TP n 1 Correction Semaine du 20 septembre 2010 1 Entrées/sorties, types de bases et structures de contrôle Tests et types de bases Tests et types de bases (entiers) public

Plus en détail

Sensibilisation à RMI (Remote Method Invocation)

Sensibilisation à RMI (Remote Method Invocation) Jini Sensibilisation à RMI (Remote Method Invocation) Le rêve de tout système distribué L idéal serait d avoir un système distribué utilisant la technologie objet et permettant : 1) d invoquer une méthode

Plus en détail

Serveurs réseau. 2011 Pearson Education France Java, mise à jour pour Java 7 Timothy Fisher

Serveurs réseau. 2011 Pearson Education France Java, mise à jour pour Java 7 Timothy Fisher 11 Serveurs réseau En pratique, il y a bien plus de chances que vous écriviez du code de client réseau que du code de serveur réseau. Toutefois, bon nombre d applications intègrent à la fois des fonctionnalités

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

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

Plan Rappels sur les patrons de conception Contexte Annuaire JNDI Conception d Applications Hétérogènes Distribuées

Plan Rappels sur les patrons de conception Contexte Annuaire JNDI Conception d Applications Hétérogènes Distribuées Conception d Applications Hétérogènes Distribuées Master 2 Traitement de l Information Lionel Médini Septembre-novembre 2015 du cours Outils de programmation avancés Retour sur les patrons de conception

Plus en détail

Conception d Applications Réparties

Conception d Applications Réparties Jean-François Roos LIFL - équipe GOAL- bâtiment M3 Extension - bureau 206 -Jean-Francois.Roos@lifl.fr 1 Objectifs du Cours Appréhender la conception d applications réparties motivations et concepts architectures

Plus en détail

La carte à puce multi-applicative

La carte à puce multi-applicative Les nouveaux enjeux de la Carte à puce Sécurisation des technologies multi-applicatives embarquées pour l utilisation élargie de la carte à puce La carte à puce multi-applicative et sa sécurité sauveron@labri.fr

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

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

LSI2 Programmation Web TP n 4 du 17 décembre 2007

LSI2 Programmation Web TP n 4 du 17 décembre 2007 Page 1 sur 6 LSI2 Programmation Web TP n 4 du 17 décembre 2007 Corrigé des TPs précédents Le code source de la solution est fourni dans un fichier.zip téléchargeable à l adresse http://www.isitix.com/enssat/enssat20071217.zip

Plus en détail

Servlets (fin) Accès aux paramètres. GET différend de POST GET : Paramètres dans l'url POST : Paramètres dans l'header

Servlets (fin) Accès aux paramètres. GET différend de POST GET : Paramètres dans l'url POST : Paramètres dans l'header Servlets (fin) Accès aux paramètres GET différend de POST GET : Paramètres dans l'url POST : Paramètres dans l'header Masqué par l'api Méthode getparameter(), getparametervalues() [page de forumulaire]

Plus en détail

Les formations. Développeur Logiciel. ENI Ecole Informatique

Les formations. Développeur Logiciel. ENI Ecole Informatique page 1/8 Titre professionnel : Inscrit au RNCP de Niveau III (Bac + 2) (J.O. du 19/02/13) 24 semaines + 8 semaines de stage (uniquement en formation continue) Développer une application orientée objet

Plus en détail

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1 La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1 Plan 1. Généralités sur la persistance des données dans les applications 2. La connection

Plus en détail

Bibliographie utilisée

Bibliographie utilisée Android View, onclick, Activity, Modèle Vue Contrôleur jean-michel Douin, douin au cnam point fr version : 26 Septembre 2012 Notes de cours 1 Bibliographie utilisée http://developer.android.com/resources/index.html

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

Dis papa, c est quoi un bus logiciel réparti?

Dis papa, c est quoi un bus logiciel réparti? Dis papa, c est quoi un bus logiciel réparti? Raphael.Marvie@lifl.fr LIFL IRCICA Equipe GOAL Octobre 2006 10. Des sockets aux bus logiciels répartis 1 0. Une application répartie 2 Objectif Découvrir la

Plus en détail

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) Remote Method Invocation (RMI) TP Réseau Université Paul Sabatier Master Informatique 1 ère Année Année 2006/2007 Plan Objectifs et Inconvénients de RMI Fonctionnement Définitions Architecture et principe

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

Java et Objet. Amélie Lambert 2014-2015. Amélie Lambert 2014-2015 1 / 52

Java et Objet. Amélie Lambert 2014-2015. Amélie Lambert 2014-2015 1 / 52 Java et Objet Amélie Lambert 2014-2015 Amélie Lambert 2014-2015 1 / 52 Chapitre 10 Le langage JavaServer Pages (JSP) et le modèle de composants Java (Java beans) Amélie Lambert 2014-2015 2 / 52 Plan du

Plus en détail