Ce Support de cours Spring contient :
- Architecture JEE (Over view)
- Spring Overview
- Spring IOC
- Spring MVC
- Spring Integration (RMI, JaxWS, JaxRS, JMS, JMX,...)
- Spring Security
Bon apprentissage à tous
Cette présentation donne une idée bien détaillée sur les web services. Elle présente aussi les types de web services(SOAP, REST), et enfin comment les développer dans le langage de programmation java.
Ce support de cours contient les concepts fondamentaux de la sécurité des applications Web Statless avec Json Web Token. Des applications de mise en oeuvre de JWT et Spring Security pour les applications basées sur les Micro-services sont publiées ma chaîne vidéo Youtube :
https://www.youtube.com/user/mohamedYoussfi
Le code source des applications est publié sur mon compte GitHUB:
https://github.com/mohamedYoussfi/
Bon apprentissage
Support de cours EJB :
- Architecture JEE
- Séparer le code métier et le code technique
- Inversion de contrôle
- EJB session
- EJB Entity
- Mise en oeuvre des projets EJB
- EJB et Web services
- JMS
- MDB
- Gestion de transactions avec EJB
- Application
Ce support explique les concepts de bases du principe de l'inversion de contrôle et d'injections des dépendances.
Les concepts les plus importants à comprendre par les futurs ingénieurs du génie Logiciel.
Ce Support de cours Spring contient :
- Architecture JEE (Over view)
- Spring Overview
- Spring IOC
- Spring MVC
- Spring Integration (RMI, JaxWS, JaxRS, JMS, JMX,...)
- Spring Security
Bon apprentissage à tous
Cette présentation donne une idée bien détaillée sur les web services. Elle présente aussi les types de web services(SOAP, REST), et enfin comment les développer dans le langage de programmation java.
Ce support de cours contient les concepts fondamentaux de la sécurité des applications Web Statless avec Json Web Token. Des applications de mise en oeuvre de JWT et Spring Security pour les applications basées sur les Micro-services sont publiées ma chaîne vidéo Youtube :
https://www.youtube.com/user/mohamedYoussfi
Le code source des applications est publié sur mon compte GitHUB:
https://github.com/mohamedYoussfi/
Bon apprentissage
Support de cours EJB :
- Architecture JEE
- Séparer le code métier et le code technique
- Inversion de contrôle
- EJB session
- EJB Entity
- Mise en oeuvre des projets EJB
- EJB et Web services
- JMS
- MDB
- Gestion de transactions avec EJB
- Application
Ce support explique les concepts de bases du principe de l'inversion de contrôle et d'injections des dépendances.
Les concepts les plus importants à comprendre par les futurs ingénieurs du génie Logiciel.
This document discusses deployment processes and best practices. It defines deployment as the activities that make a software system available for use and involve moving approved releases to test and production environments. The document outlines deployment workflows involving development, staging, and production environments. It also discusses concepts like continuous integration, continuous delivery, continuous deployment, and DevOps practices for automating deployment processes.
Thinking BIG ou comment passer des Data aux BIG DATA!
(pour un meilleur rendu, installer la police Poiret One: http://www.1001freefonts.com/d/5561/poiret_one.zip )
Les Servlets
Cycle de vie d'une Servlet
Traitement des données de formulaires
Gestion de l'état avec cookies et sessions
Introduction aux JSP
Les balises JSP personnalisées
Règles de conception
Présentation sur Ajax en Java dans le cadre du cours combiné GTI780 / MTI780, Sujets spéciaux en TI, donné par Claude Coulombe, à l'École de technologie supérieure, Montréal, Automne 2009
Spring MVC est un framwork qui permet d’implémenter des applications selon le design pattern MVC.
Ce n'est pas un framework événementiel comme pourraient l'être jsf, wicket, tapestry ou struts 2. Mais il possède de nombreux points
d'extensions et utilisé avec Spring Web Flow il devient un framework très puissant.
- Graph databases like Neo4j use a graph structure with nodes and relationships to represent data. Nodes can represent entities and relationships can represent connections between nodes.
- The example database models movies, people, and their relationships. Movies and people are represented as nodes with labels. Relationships like "ACTED_IN" connect actors to movies they appeared in.
- Cypher is the query language used to interact with Neo4j. Queries can read and modify data, traverse paths in the graph, and use filters to find specific nodes/relationships.
This document provides an overview of using MongoDB with examples of common operations like inserting documents, querying, updating, and indexing. It demonstrates how to:
- Set up and connect to a MongoDB database using Docker
- Insert, find, update, and remove documents from a collection
- Query documents using equality, greater/less than, AND/OR operators
- Sort and limit output with projections
- Create indexes on fields for improved performance
This document provides instructions for using Cassandra with Docker and examples of Cassandra queries for creating and interacting with keyspaces, tables, rows, columns and different data types including sets, lists, and maps. It demonstrates how to create and query tables with a single primary key or composite primary keys, add and modify columns, insert, update, select and delete data. The document concludes with an activity to design and implement an enrollment example using Cassandra.
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...Horgix
This is the slide deck of a talk by Alexis "Horgix" Chotard and Laurentiu Capatina presented at the MongoDB Paris User Group in June 2024 about the feedback on how PayFit move away from a monolithic hell of a self-hosted MongoDB cluster to managed alternatives. Pitch below.
March 15, 2023, 6:59 AM: a MongoDB cluster collapses. Tough luck, this cluster contains 95% of user data and is absolutely vital for even minimal operation of our application. To worsen matters, this cluster is 7 years behind on versions, is not scalable, and barely observable. Furthermore, even the data model would quickly raise eyebrows: applications communicating with each other by reading/writing in the same MongoDB documents, documents reaching the maximum limit of 16MiB with hundreds of levels of nesting, and so forth. The incident will last several days and result in the loss of many users. We've seen better scenarios.
Let's explore how PayFit found itself in this hellish situation and, more importantly, how we managed to overcome it!
On the agenda: technical stabilization, untangling data models, breaking apart a Single Point of Failure (SPOF) into several elements with a more restricted blast radius, transitioning to managed services, improving internal accesses, regaining control over risky operations, and ultimately, approaching a technical migration when it impacts all development teams.
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...OCTO Technology
Par Nicolas Bordier (Consultant numérique responsable @OCTO Technology) et Alaric Rougnon-Glasson (Sustainable Tech Consultant @OCTO Technology)
Sur un exemple très concret d’audit d’éco-conception de l’outil de bilan carbone C’Bilan développé par ICDC (Caisse des dépôts et consignations) nous allons expliquer en quoi l’ACV (analyse de cycle de vie) a été déterminante pour identifier les pistes d’actions pour réduire jusqu'à 82% de l’empreinte environnementale du service.
Vidéo Youtube : https://www.youtube.com/watch?v=7R8oL2P_DkU
Compte-rendu :
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...OCTO Technology
par Claude Camus (Coach agile d'organisation @OCTO Technology) et Gilles Masy (Organizational Coach @OCTO Technology)
Les équipes infrastructure, sécurité, production, ou cloud, doivent consacrer du temps à la modernisation de leurs outils (automatisation, cloud, etc) et de leurs pratiques (DevOps, SRE, etc). Dans le même temps, elles doivent répondre à une avalanche croissante de demandes, tout en maintenant un niveau de qualité de service optimal.
Habitué des environnements développeurs, les transformations agiles négligent les particularités des équipes OPS. Lors de ce comptoir, nous vous partagerons notre proposition de valeur de l'agilité@OPS, qui embarquera vos équipes OPS en Classe Business (Agility), et leur fera dire : "nous ne reviendrons pas en arrière".
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Laurent Speyser
(Conférence dessinée)
Vous êtes certainement à l’origine, ou impliqué, dans un changement au sein de votre organisation. Et peut être que cela ne se passe pas aussi bien qu’attendu…
Depuis plusieurs années, je fais régulièrement le constat de l’échec de l’adoption de l’Agilité, et plus globalement de grands changements, dans les organisations. Je vais tenter de vous expliquer pourquoi ils suscitent peu d'adhésion, peu d’engagement, et ils ne tiennent pas dans le temps.
Heureusement, il existe un autre chemin. Pour l'emprunter il s'agira de cultiver l'invitation, l'intelligence collective , la mécanique des jeux, les rites de passages, .... afin que l'agilité prenne racine.
Vous repartirez de cette conférence en ayant pris du recul sur le changement tel qu‘il est généralement opéré aujourd’hui, et en ayant découvert (ou redécouvert) le seul guide valable à suivre, à mon sens, pour un changement authentique, durable, et respectueux des individus! Et en bonus, 2 ou 3 trucs pratiques!
L'IA connaît une croissance rapide et son intégration dans le domaine éducatif soulève de nombreuses questions. Aujourd'hui, nous explorerons comment les étudiants utilisent l'IA, les perceptions des enseignants à ce sujet, et les mesures possibles pour encadrer ces usages.
Constat Actuel
L'IA est de plus en plus présente dans notre quotidien, y compris dans l'éducation. Certaines universités, comme Science Po en janvier 2023, ont interdit l'utilisation de l'IA, tandis que d'autres, comme l'Université de Prague, la considèrent comme du plagiat. Cette diversité de positions souligne la nécessité urgente d'une réponse institutionnelle pour encadrer ces usages et prévenir les risques de triche et de plagiat.
Enquête Nationale
Pour mieux comprendre ces dynamiques, une enquête nationale intitulée "L'IA dans l'enseignement" a été réalisée. Les auteurs de cette enquête sont Le Sphynx (sondage) et Compilatio (fraude académique). Elle a été diffusée dans les universités de Lyon et d'Aix-Marseille entre le 21 juin et le 15 août 2023, touchant 1242 enseignants et 4443 étudiants. Les questionnaires, conçus pour étudier les usages de l'IA et les représentations de ces usages, abordaient des thèmes comme les craintes, les opportunités et l'acceptabilité.
Résultats de l'Enquête
Les résultats montrent que 55 % des étudiants utilisent l'IA de manière occasionnelle ou fréquente, contre 34 % des enseignants. Cependant, 88 % des enseignants pensent que leurs étudiants utilisent l'IA, ce qui pourrait indiquer une surestimation des usages. Les usages identifiés incluent la recherche d'informations et la rédaction de textes, bien que ces réponses ne puissent pas être cumulées dans les choix proposés.
Analyse Critique
Une analyse plus approfondie révèle que les enseignants peinent à percevoir les bénéfices de l'IA pour l'apprentissage, contrairement aux étudiants. La question de savoir si l'IA améliore les notes sans développer les compétences reste débattue. Est-ce un dopage académique ou une opportunité pour un apprentissage plus efficace ?
Acceptabilité et Éthique
L'enquête révèle que beaucoup d'étudiants jugent acceptable d'utiliser l'IA pour rédiger leurs devoirs, et même un quart des enseignants partagent cet avis. Cela pose des questions éthiques cruciales : copier-coller est-il tricher ? Utiliser l'IA sous supervision ou pour des traductions est-il acceptable ? La réponse n'est pas simple et nécessite un débat ouvert.
Propositions et Solutions
Pour encadrer ces usages, plusieurs solutions sont proposées. Plutôt que d'interdire l'IA, il est suggéré de fixer des règles pour une utilisation responsable. Des innovations pédagogiques peuvent également être explorées, comme la création de situations de concurrence professionnelle ou l'utilisation de détecteurs d'IA.
Conclusion
En conclusion, bien que l'étude présente des limites, elle souligne un besoin urgent de régulation. Une charte institutionnelle pourrait fournir un cadre pour une utilisation éthique.
1. LA 3 SIL – 2013/2014
TP2 : Les Services Web avec JAX-RS
Dr. Lilia Sfaxi
Objectifs du TP : Création de services web de type REST avec JAX-RS,
l’IDE Netbeans et le serveur Glassfish
Institut National des Sciences Appliquées et de Technologie
2. 2
TP2 : Les Services Web avec JAX-RS
I. Les Services Web de type REST
I.1.
Présentation de REST
REST (Representational State Transfer) est un style d’architecture basé sur les standards
Web et le protocole http. Il a été présenté en premier lieu par Roy Fielding en 2000.
Dans une architecture basée sur REST :
-‐
-‐
-‐
-‐
I.2.
Tout est Resssource. Une ressource est accédée via une interface basée sur les
méthodes http standard.
Il existe un serveur REST qui fournit l’accès aux ressources, et un client REST qui
accède et modifie les ressources REST.
Chaque ressource doit supporter les opérations HTTP communes. Elle est identifiée
par un ID global (typiquement un URI)
Les ressources peuvent avoir des représentations différentes (texte, xml, json…). Le
client REST peut exiger des représentations spécifiques via le protocole HTTP
(négociation de contenu).
Les Méthodes http
Les méthodes PUT, GET, POST et DELETE sont utilisées dans les architectures à base de REST.
-‐
-‐
-‐
-‐
I.3.
GET définit un accès en lecture de la ressource. Il ne change jamais la ressource
PUT crée une nouvelle ressource
DELETE supprime une ressource
POST met à jour une ressource existante et peut en créer des nouvelles
Les Services Web RESTful
Les services web RESTful sont basés sur les méthodes http et le concept de REST, Ils
définissent un URI de base pour les services, les types MIME (XML, Text, JSON, …) et
l’ensemble des opérations supportées (POST, GET, PUT et DELETE).
II. Présentation de JAX-RS
Java définit un support pour le standard REST via JAX-RS (Java API for RESTful Web
Services). Il utilise des annotations pour simplifier le développement de services web REST.
Ces annotations permettent de définir les ressources et les actions pouvant y être
appliquées. Ces annotations prennent effet à l’exécution, pour générer les classes et
artéfacts pour la ressource.
Le tableau ci-dessous représente les annotations les plus utilisées dans JAX-RS.
Architecture
Orientée
Services
3. 3
TP2 : Les Services Web avec JAX-RS
Annotation
Description
@PATH
Chemin URI indiquant où une classe Java sera hébergée. Par exemple
/helloworld. Il est également possible d’insérer des variables dans un URI,
par exemple, il est possible de demander le nom de l’utilisateur et le
passer à l’application dans le chemin : /helloworld/{username}
@GET
Une méthode Java annotée avec @GET désigne une requête de type
HTTP GET. Le comportement de la ressource est déterminé par la
méthode HTTP à laquelle la ressource répond.
@POST
Désigne une méthode correspondant à la requête HTTP POST.
@PUT
Désigne une méthode correspondant à la requête HTTP PUT.
@DELETE
Désigne une méthode correspondant à la requête HTTP DELETE.
@HEAD
Désigne une méthode correspondant à la requête HTTP HEAD.
@PathParam
Désigne un paramètre pouvant être extrait à partir de l’URI, pour être
utilisé par la ressource. Le nom du paramètre entré correspond au nom
de la variable définie dans l’annotation @PATH
@Consumes
Utilisée pour spécifier le type de représentation MIME qu’une ressource
peut consommer, et qui sont envoyées par le client.
@Produces
Utilisée pour spécifier le type de représentation MIME qu’une ressource
peut produire, et envoyer au client.
III. Première Application JAX-RS : Helloworld
III.1. Création du service web
Pour créer un service Web RESTful en utilisant l’IDE NetBeans et Glassfish (installés et
configurés dans le TP précédent), procéder comme suit :
1. Dans NetBeans, créer une application web simple, que vous nommerez
HelloWorldApplication
2. Faire un clic-droit sur le projet, et sélectionner New -> RESTful Web Services from
Patterns.
a. Désigner comme design pattern Simple Root Resource
b. Utiliser comme nom de package : helloWorld
c. Utiliser comme Path : helloworld
d. Utiliser comme nom de classe : HelloWorld
Architecture
Orientée
Services
4. 4
TP2 : Les Services Web avec JAX-RS
e. Utiliser type MIME text/html
Votre Projet aura ainsi l’apparence suivante :
3. Dans le fichier HelloWorld.java, la méthode getHTML() représente une requête de
type GET. Remplacer le commentaire //TODO par le code suivant, pour afficher
votre message :
return "<html lang="en"><body><h1>Hello, World!!</body></h1></html>";
Le code obtenu sera alors le suivant :
Architecture
Orientée
Services
5. 5
TP2 : Les Services Web avec JAX-RS
Ressource HelloWorld, avec comme URI: /helloworld
Méthode getHtml de type HTTP GET, permet d’afficher un texte de type
text/html
Méthode putHtml de type HTTP PUT, permet de créer une nouvelle
ressource, et saisit en entrée une chaine de type text/html
III.2. Test du service web
Pour tester le service web, suivre les étapes suivantes :
1. Clic-droit sur le projet et choisir Test Restful Web Services. Cela ouvrira la fenêtre
suivante :
Architecture
Orientée
Services
6. 6
TP2 : Les Services Web avec JAX-RS
2. Choisir Web Test Client in Project, et sélectionner le projet HelloWorldApplication
dans la fenêtre qui vous est offerte.
3. Un navigateur web va s’ouvrir, avec l’interface de test.
a. Choisir votre ressource helloworld dans le panneau gauche de votre écran
b. Choisir la méthode à tester (dans notre cas, c’est la méthode GET)
c. Cliquer sur le bouton Test.
L’affichage suivant doit apparaître dans votre écran :
III.3. Configuration du Run
Pour configurer l’exécution de votre application avec le bouton Run
suivantes :
, suivre les étapes
1. Clic-droit sur le nom du projet et choisir Properties
2. Sélectionner la catégorie Run dans la fenêtre qui apparaît
3. Mettre la valeur du champs Relative URL à l’emplacement du service web REST
relatif au PATH, qui est, pour cet exemple : webresources/helloworld
Remarque : pour déterminer la valeur du Relative URL dans l’exemple de test que vous
avez réalisé dans la partie III.2. , regarder le chemin affiché en haut de votre navigateur,
dans le panneau de droite :
Architecture
Orientée
Services
7. TP2 : Les Services Web avec JAX-RS
7
4. Déployer votre service web
5. Exécuter votre service web. L’affichage suivant apparaît dans le navigateur.
IV.
Services Web RESTful à partir d’une base de données
IV.1. Création et configuration de la base de données
On se propose de générer un service web RESTful à partir d’une base de données de
notre choix. Pour ce faire, commencer par créer la base de données avec MySQL (en
utilisant l’outil d’administration de votre choix). Appeler la base « maBD » et créer une
table client dans cette base.
Choisir une structure et insérer un contenu dans cette table.
Une fois la base de données créée, il faut la configurer au niveau de NetBeans. Pour cela,
suivre les étapes suivantes :
-‐
Aller sous l’onglet Services dans le panneau gauche de votre IDE
-‐
-‐
Clic-droit sur Databases et choisir Register MySQL Server
Garder les paramètres par défaut, et valider.
Architecture
Orientée
Services
8. 8
TP2 : Les Services Web avec JAX-RS
-‐
-‐
Clic-droit sur le nouveau serveur MySQL qui est apparu, et choisir Connect. La liste
des bases de données disponibles dans le serveur apparaît, dont la base maBD.
Clic-droit sur maBD et choisir Connect. Une connexion à la base de données sera
alors créée, comme suit :
IV.2. Génération du service web
Pour générer le service web qui utilise cette base de données, suivre les étapes suivantes :
-‐
-‐
-‐
-‐
-‐
-‐
Créer un nouveau projet de type Application Web, qu’on nommera ClientBD
Clic-droit sur ce projet, et faire New -> Restful Web Services from Database
Créer une nouvelle source de données relative à votre base. Si tout se passe
correctement, la liste des tables dans la base apparaît dans le champs Available
Tables à gauche de la fenêtre.
Ajouter la table client à la liste des Selected Tables
Choisir comme nom de package insat.soa.tp2.maBD
Valider. Votre projet aura alors l’arborescence suivante :
Architecture
Orientée
Services
9. TP2 : Les Services Web avec JAX-RS
9
Regarder le code généré, et essayer de comprendre les différentes fonctionnalités.
Lancer un Test du service web, et essayer d’exécuter l’ensemble des méthodes HTTP
existantes. Noter la différence entre elles.
V. Services Web RESTful à partir d’objets Java
On désire dans ce qui suit créer un service web RESTful dont les ressources sont
représentées par des classes Java annotées.
Le Service Web REST de cet exercice consiste à créer un système CRUD pour
l’interrogation et la réservation de trains. Les ressources manipulées par les services sont
donc un train et une réservation. Le service Web REST doit pouvoir lister l’ensemble des
trains, et de lister les trains qui satisfont un critère de recherche (nom, ville de départ, ville
d’arrivée).
Pour cela, suivre les étapes suivantes :
1. Créer une application web, appelée ReservationTrains
2. Créer la classe Train, qui modélise le concept de trains, et qui contient un attribut
String nom, et deux attributs String villeDepart et String villeArrivee représentant les
villes de départ et d’arrivée du train. Ajouter les getters et les setters de cette
classe. Le code ressemble à ce qui suit (c’est un code manquant, vous devez le
terminer):
Architecture
Orientée
Services
10. 10
TP2 : Les Services Web avec JAX-RS
Annotation qui permet de convertir cet objet Java en XML et vice-versa.
3. Créer la classe ReserverTrain qui permet de persister les informations concernant le
service web.
Modifier ces données à votre guise
4. Créer la classe TrainRessource qui permet l’accès aux services web RESTful de la
ressource Train. On se propose de réaliser les fonctions suivantes (cette classe est à
implémenter vous-mêmes) :
Architecture
Orientée
Services
11. 11
TP2 : Les Services Web avec JAX-RS
-‐
-‐
-‐
Définir comme chemin de ressource racine la valeur /train
Créer la méthode getTrains, qui permet d’afficher la liste des trains
format JSON.
Créer la méthode getTrain, qui utilise un chemin de ressource
/train/nom/{nom}, et qui permet d’afficher le train dont le nom est
comme paramètre à la requête. Le résultat de cette méthode sera
forme XML.
sous le
racine
donné
sous la
Indication : Compléter pour cela le code suivant :
Compléter la méthode HTTP nécessaire
…
Compléter pour définir le format de retour
demandé
Ceci est le path à ajouter au chemin principal du service web. Il
permet de saisir comme paramètre une valeur entrée par l’utilisateur,
@Path("nom/{nom}")
représentée ici par {nom}
…
public Train getTrain(@PathParam("nom") String nomTrain) {
…
Ceci indique que le paramètre nomTrain représente le même
paramètre entré par l’utilisateur dans le chemin d’accès : nom
}
-‐
Créer la méthode rechercheTrain, qui utilise un chemin de ressource racine
/train/recherche, et qui permet, selon deux critères villeDepart et villeArrivee
entrés en paramètre, d’afficher la liste des trains correspondant à ces deux
critères. Le résultat de cette méthode sera sous la forme XML.
Indication : Compléter pour cela le code suivant :
Compléter la méthode HTTP nécessaire
…
Compléter pour définir le chemin demandé
…
Compléter pour définir le format de retour demandé
…
public
List<Train>
rechercheTrain(@QueryParam("depart")
@QueryParam("arrivee") String arr) {
…
}
String
dep,
Ceci indique que les paramètres dep et arr correspondent aux paramètres
depart et arrivee entrés par l’utilisateur dans la requête.
5. A partir du navigateur, invoquer les trois services comme suit :
-‐ http://localhost:8080/Train/webresources/train
-‐ http://localhost:8080/Train/webresources/train/nom/TR1
-‐ http://localhost:8080/Train/webresources/train/rechercheTrain?depart=Tunis
&arrivee=Sousse
Architecture
Orientée
Services
12. 12
VI.
TP2 : Les Services Web avec JAX-RS
Homework
Reprendre l’exemple de convertisseur de monnaie développé pour le TP précédent,
et l’appliquer sur les services web REST. Le but est d’utiliser les différentes méthodes HTTP
(@Get, @Post, @Put et @Delete), ainsi que la saisie de paramètre dans le path
(@PathParam) et dans la requête (@QueryParam).
Date de remise du travail : prochaine séance de TP.
Architecture
Orientée
Services