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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

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

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

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

CEG3585/CEG3555 Tutorat 2. Été 2015

CEG3585/CEG3555 Tutorat 2. Été 2015 CEG3585/CEG3555 Tutorat 2 Été 2015 Architecture TCP/IP Les applications sont développées avec le socket API (en Java les classes Socket et ServerSocket) Adresse socket: Port TCP Adresse IP Les deux adresses

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

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

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

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

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

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

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

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

T.P. 3 Base de données, JDBC et Mapping Objet-relationnel

T.P. 3 Base de données, JDBC et Mapping Objet-relationnel EPITA Ala Eddine BEN SALEM App-Ing2 J2EE T.P. 3 Base de données, JDBC et Mapping Objet-relationnel L'objectif de ce TP est de vous faire pratiquer l'api JDBC qui permet d'accéder à une base de données

Plus en détail

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée forax at univ-mlv dot fr - ParisJUG Java.next() - Mars 2012 What Else? Lambda == Inner class? Java a des lambdas depuis la version 1.1 Exemple utilisant

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

Synchronisation par. Rappels. Plan. Conditions et moniteurs (1/7) Inf 431 Cours 11. jeanjacqueslevy.net

Synchronisation par. Rappels. Plan. Conditions et moniteurs (1/7) Inf 431 Cours 11. jeanjacqueslevy.net Rappels Inf 431 Cours 11 un processus t (Thread) est un programme qui s exécute Synchronisation par mémoire partagée tstart lance l exécution concurrente de la méthode trun de t tinterrupt signale qu on

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

Plateforme PAYZEN. Définition de Web-services

Plateforme PAYZEN. Définition de Web-services Plateforme PAYZEN Définition de Web-services Ordre de paiement Version 1.1 Rédaction, Vérification, Approbation Rédaction Vérification Approbation Nom Date/Visa Nom Date/Visa Nom Date/Visa Lyra-Network

Plus en détail

Aide Utilisateur. Cellpass.fr

Aide Utilisateur. Cellpass.fr Aide Utilisateur Mise en place simple :... 2 Création d une ressource... 2 Installation du module... 5 Test fonction file OK... 7 temps de connexion < 1 seconde(s)... 7 Exemple d'installation PassUp pour

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

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

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

Programmation en Java IUT GEII (MC-II1) 1

Programmation en Java IUT GEII (MC-II1) 1 Programmation en Java IUT GEII (MC-II1) 1 Christophe BLANC - Paul CHECCHIN IUT Montluçon Université Blaise Pascal Novembre 2009 Christophe BLANC - Paul CHECCHIN Programmation en Java IUT GEII (MC-II1)

Plus en détail

Théorie des Langages

Théorie des Langages Théorie des Langages AntLR - Générateur d analyseurs Claude Moulin Université de Technologie de Compiègne Printemps 2015 Sommaire 1 Introduction 2 AntLR ANTLR : ANother Tool for Language Recognition URL

Plus en détail

Application Control technique Aymen Barhoumi, Pre-sales specialist 23/01/2015

Application Control technique Aymen Barhoumi, Pre-sales specialist 23/01/2015 Bienvenue Application Control technique Aymen Barhoumi, Pre-sales specialist 23/01/2015 Contexte 2 Agenda 1 Présentation de la Blade Application Control: catégorisation, Appwiki 2 Interfaçage avec la Blade

Plus en détail

Cedric Dumoulin (C) The Java EE 7 Tutorial http://docs.oracle.com/javaee/7/tutorial/doc/

Cedric Dumoulin (C) The Java EE 7 Tutorial http://docs.oracle.com/javaee/7/tutorial/doc/ Cedric Dumoulin (C) The Java EE 7 Tutorial http://docs.oracle.com/javaee/7/tutorial/doc/ Webographie The Java EE 7 Tutorial http://docs.oracle.com/javaee/7/tutorial/doc/ Les slides de cette présentation

Plus en détail

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5 ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5 Informations juridiques Copyright 2010 Adobe Systems Incorporated and its licensors. All rights reserved. Administration d Adobe LiveCycle Mosaic 9.5 13 octobre

Plus en détail

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/2012. 1 - Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/2012. 1 - Vue générale 2 - Mon premier programme 3 - Types de Programme Java 1 - Vue générale 2 - Mon premier programme 3 - Types de Programme 1 2 c est quoi? Technologie développée par SUN Microsystems lancée en 1995 Dans un des premiers papiers* sur le langage JAVA, SUN le décrit

Plus en détail

LA CARTE D IDENTITE ELECTRONIQUE (eid)

LA CARTE D IDENTITE ELECTRONIQUE (eid) LA CARTE D IDENTITE ELECTRONIQUE (eid) MANUEL POUR WINDOWS VERSION 1.1 Avis de rejet de responsabilité Fedict ne peut être tenu pour responsable d aucun préjudice qu un tiers pourrait subir suite à d éventuelles

Plus en détail

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant. Chapitre 7 Le mode de communication en connexion est, a priori, supporté par le protocole TCP. Ce protocole fournit une communication fiable; les données sont transmises comme chaînes d octets. Avant de

Plus en détail

MISE EN PLACE DE LA PLATE-FORME

MISE EN PLACE DE LA PLATE-FORME 1/1/01 GESTION DE CONFIGURATION MISE EN PLACE DE LA PLATE-FORME Notion d agregât L agrégat est un regroupement de plusieurs disques fonctionnels techniques et de sécurité ou espace de disques de stockage

Plus en détail

NIMBUS TRAINING. Administration de Citrix NetScaler 10. Déscription : Objectifs. Publics. Durée. Pré-requis. Programme de cette formation

NIMBUS TRAINING. Administration de Citrix NetScaler 10. Déscription : Objectifs. Publics. Durée. Pré-requis. Programme de cette formation Administration de Citrix NetScaler 10 Déscription : Cette formation aux concepts de base et avancés sur NetScaler 10 permet la mise en oeuvre, la configuration, la sécurisation, le contrôle, l optimisation

Plus en détail

Présentation et traitement d information sur le Web Présentation du WWW (architectures web)

Présentation et traitement d information sur le Web Présentation du WWW (architectures web) Université de La Rochelle LUP-SIG 2004-2005 Programmation SIG et Internet Cartographique Présentation et traitement d information sur le Web Présentation du WWW (architectures web) Jean-Michel Follin jean-michel.follin@univ-lr.fr

Plus en détail

Perso. SmartCard. Mail distribution. Annuaire LDAP. SmartCard Distribution OCSP. Codes mobiles ActivX Applet. CRLs

Perso. SmartCard. Mail distribution. Annuaire LDAP. SmartCard Distribution OCSP. Codes mobiles ActivX Applet. CRLs HASH LOGIC s e c u r i t y s o l u t i o n s Version 1.0 de Janvier 2007 PKI Server Une solution simple, performante et économique Les projets ayant besoin d'une infrastructure PKI sont souvent freinés

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

Etude de cas PLM. Patrice TORGUET IRIT Université Paul Sabatier

Etude de cas PLM. Patrice TORGUET IRIT Université Paul Sabatier Etude de cas PLM Patrice TORGUET IRIT Université Paul Sabatier Plan Exemple PLM Répartition avec Sockets Répartition avec RMI Répartition avec CORBA Répartition avec JMS Répartition avec Java EE Améliorations

Plus en détail

OpenPaaS Le réseau social d'entreprise

OpenPaaS Le réseau social d'entreprise OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3

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

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

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

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

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

WEB page builder and server for SCADA applications usable from a WEB navigator

WEB page builder and server for SCADA applications usable from a WEB navigator Générateur de pages WEB et serveur pour supervision accessible à partir d un navigateur WEB WEB page builder and server for SCADA applications usable from a WEB navigator opyright 2007 IRAI Manual Manuel

Plus en détail

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle F. Butelle, E. Viennet, Système GTR2 IUT Paris 3 Communication inter-processus (IPC) : tubes & sockets exemples en C et en Java F. Butelle F. Butelle, E. Viennet, Système GTR2 IUT Paris 3 Java : implémentation

Plus en détail

Modèle-Vue-Contrôleur. Développement Web 2. Projet 1 Sondages. Organisation générale

Modèle-Vue-Contrôleur. Développement Web 2. Projet 1 Sondages. Organisation générale PHP Modèle-Vue-Contrôleur Introduction Modèle-Vue-Contrôleur Développement Web 2 Bertrand Estellon Aix-Marseille Université April 1, 2014 Le Modèle-Vue-Contrôleur (MVC) est un méthode de conception utilisée

Plus en détail

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites Java Licence Professionnelle 2009-2010 Cours 7 : Classes et méthodes abstraites 1 Java Classes et méthodes abstraites - Le mécanisme des classes abstraites permet de définir des comportements (méthodes)

Plus en détail

Architecture des applications

Architecture des applications Architecture des applications Table des matières 1 Introduction 1 2 Les classes valeurs 2 2.1 Les Javaeans............................................. 2 2.2 Les différents types de Javaeans...................................

Plus en détail

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections

Plus en détail

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp Serveur d'application Client HTML/JS Apache Thrift Bootcamp Pré-requis La liste ci-dessous de logiciels doit être installée et opérationnelle sur la machine des participants : Compilateur thrift http://thrift.apache.org/

Plus en détail

INITIATION AU LANGAGE JAVA

INITIATION AU LANGAGE JAVA INITIATION AU LANGAGE JAVA I. Présentation 1.1 Historique : Au début des années 90, Sun travaillait sur un projet visant à concevoir des logiciels simples et performants exécutés dans des PDA (Personnal

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

BIRT (Business Intelligence and Reporting Tools)

BIRT (Business Intelligence and Reporting Tools) BIRT (Business Intelligence and Reporting Tools) Introduction Cette publication a pour objectif de présenter l outil de reporting BIRT, dans le cadre de l unité de valeur «Data Warehouse et Outils Décisionnels»

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

Alfstore workflow framework Spécification technique

Alfstore workflow framework Spécification technique Alfstore workflow framework Spécification technique Version 0.91 (2012-08-03) www.alfstore.com Email: info@alfstore.com Alfstore workflow framework 2012-10-28 1/28 Historique des versions Version Date

Plus en détail

Plan. Department of Informatics

Plan. Department of Informatics Plan 1. Application Servers 2. Servlets, JSP, JDBC 3. J2EE: Vue d ensemble 4. Distributed Programming 5. Enterprise JavaBeans 6. Enterprise JavaBeans: Special Topics 7. Prise de recul critique Enterprise

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

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry. : Java Agent DEvelopment framework Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.fr Introduction à la plateforme JADE 1) Modèle d agent 2) Services 3) Norme FIPA

Plus en détail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

Sécurité dans les développements

Sécurité dans les développements HERVÉ SCHAUER CONSULTANTS Cabinet de Consultants en Sécurité Informatique depuis 1989 Spécialisé sur Unix, Windows, TCP/IP et Internet Sécurité dans les développements Paris, 11 mai 2007 Hervé Schauer

Plus en détail

Les procédures stockées et les fonctions utilisateur

Les procédures stockées et les fonctions utilisateur Les procédures stockées et les fonctions utilisateur Z Grégory CASANOVA 2 Les procédures stockées et les fonctions utilisateur [08/07/09] Sommaire 1 Introduction... 3 2 Pré-requis... 4 3 Les procédures

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

Utiliser Service Broker pour les tâ ches progrâmme es dâns SQL Express

Utiliser Service Broker pour les tâ ches progrâmme es dâns SQL Express Utiliser Service Broker pour les tâ ches progrâmme es dâns SQL Express Chacun sait que SQL Express ne dispose pas de l Agent SQL qui permet l exécution automatique de tâches programmées, comme par exemple

Plus en détail

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00 Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00 HFFv2 1. OBJET L accroissement de la taille de code sur la version 2.0.00 a nécessité une évolution du mapping de la flash. La conséquence de ce

Plus en détail

TP 5 Serveur REST, tests et premier client REST

TP 5 Serveur REST, tests et premier client REST TP 5 Serveur REST, tests et premier client REST Xavier de Rochefort xderoche@labri.fr - labri.fr/~xderoche 13 mai 2014 Résumé Les derniers TP vous ont guidé dans ➊ la mise en place d un serveur REST avec

Plus en détail

Commencer avec Visual Studio Team Foundation Server 2008

Commencer avec Visual Studio Team Foundation Server 2008 Commencer avec Visual Studio Team Foundation Server 2008 Z 2 Commencer avec Visual Studio Team Foundation Server 16/04/09 Sommaire 1 Introduction... 3 2 Pour commencer... 4 2.1 Pré-requis... 4 2.2 Installation...

Plus en détail

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE Projet de semestre ITI soir 4ème année Résumé configuration OpenVpn sur pfsense 2.1 Etudiant :Tarek

Plus en détail

Projet gestion d'objets dupliqués

Projet gestion d'objets dupliqués Projet gestion d'objets dupliqués Daniel Hagimont Daniel.Hagimont@enseeiht.fr 1 Projet Service de gestion d'objets dupliqués Mise en cohérence lors de la prise d'un verrou sur un objet Pas de verrous imbriqués

Plus en détail

21 JUILLET 2015 DOCUMENTATION API - CGV VISIOMAIL V 1.1 WWW.SIGNAL-ARNAQUES.COM HERETIC SAS

21 JUILLET 2015 DOCUMENTATION API - CGV VISIOMAIL V 1.1 WWW.SIGNAL-ARNAQUES.COM HERETIC SAS 21 JUILLET 2015 DOCUMENTATION API - CGV VISIOMAIL V 1.1 WWW.SIGNAL-ARNAQUES.COM HERETIC SAS Table des matières Présentation de l API... 2 Documentation technique de l API... 3 Chemin d accès... 3 Forme

Plus en détail

TP 7 Client REST Java - OAuth

TP 7 Client REST Java - OAuth TP 7 Client REST Java - OAuth Xavier de Rochefort xderoche@labri.fr - labri.fr/~xderoche 15 mai 2014 Résumé Dans le TP5 nous avons comment effectué des requêtes à un service tiers et comment permettre

Plus en détail

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

RPC Remote Procedure Call. Benmoussa Yahia Université M hamed Bougara de Boumerdès yahia.benm@gmail.com

RPC Remote Procedure Call. Benmoussa Yahia Université M hamed Bougara de Boumerdès yahia.benm@gmail.com RPC Remote Procedure Call Benmoussa Yahia Université M hamed Bougara de Boumerdès yahia.benm@gmail.com Objectifs Le rôle de RPC comme middleware Positionner RPC dans le modèle OSI Développement d application

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14 Document FAQ Supervision et infrastructure - Accès aux EXP Page: 1 / 9 Table des matières Introduction... 3 Démarrage de la console JMX...4 I.Généralités... 4 II.WebLogic... 5 III.WebSphere... 6 IV.JBoss...

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

RESEAUX. Communications dans les systèmes Centralisés vs Répartis. Le modèle OSI : 7 couches Open System Interconnexion. Plan.

RESEAUX. Communications dans les systèmes Centralisés vs Répartis. Le modèle OSI : 7 couches Open System Interconnexion. Plan. RESEAUX Communications dans les systèmes Centralisés vs Répartis Espace utilisateur P1 P2 P1 P2 Programmation par sockets Espace noyau Systèmes centralisés Systèmes répartis Nécessité d avoir une mémoire

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

Installation et compilation de gnurbs sous Windows

Installation et compilation de gnurbs sous Windows Installation et compilation de gnurbs sous Windows Installation de l environnement de développement Code::Blocks (Environnement de développement) 1. Télécharger l installateur de Code::Blocks (version

Plus en détail

Développer de nouvelles fonctionnalités

Développer de nouvelles fonctionnalités 19 Développer de nouvelles fonctionnalités Chaque site e-commerce est unique. Bien que Magento soit une application riche, des besoins spécifiques apparaîtront et l ajout de modules deviendra nécessaire.

Plus en détail

Architecture Orientée Service, JSON et API REST

Architecture Orientée Service, JSON et API REST UPMC 3 février 2015 Précedemment, en LI328 Architecture générale du projet Programmation serveur Servlet/TOMCAT Aujourd hui Quelques mots sur les SOA API - REST Le format JSON API - REST et Servlet API

Plus en détail

M2 FMIN305 - Novembre 2010 CORBA

M2 FMIN305 - Novembre 2010 CORBA FMIN05 - Novembre 0 Ce TD est très largement inspiré de ceux de Gilles Roussel. Vous trouverez beaucoup de choses intéressantes ici : http://www-igm.univ-mlv.fr/ roussel. 1 Horloge distante On souhaite

Plus en détail

Vulgarisation Java EE Java EE, c est quoi?

Vulgarisation Java EE Java EE, c est quoi? Paris, le 1 Février 2012 Vulgarisation Java EE Java EE, c est quoi? Sommaire Qu est ce que Java? Types d applications Java Environnements Java Versions de Java Java EE, c est quoi finalement? Standards

Plus en détail

EXAMEN DE JAVA 2010-2011

EXAMEN DE JAVA 2010-2011 NOM : PRÉNOM : TP : G TP EXAMEN DE JAVA 2010-2011 Consignes : avec documents, mais sans téléphone, ordinateur ou autre moyen de communication. Durée : 2h Recommandations : Le code doit être écrit en JAVA

Plus en détail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail