Environnement Client/Serveur (M1 Miage Classique)
Devoir de deuxième session
TP Noté
But du cours
Ce cours a un objectif double :
- acquérir les pratiques de base du développement d'applications professionnelles au travers de livraisons hebdomadaires de projets notés;
- comprendre le développement d'applications distribuées grâce au cours théorique immédiatement suivi de projets pour une mise en pratique des concepts présentés.
Les étudiants sont formés pour :
- savoir développer selon des critères fondamentaux de qualité logicielle (convention de nommage, gestion des erreurs, POO, multi-threading, processus de tests, packaging, livraison client) ;
- acquérir les concepts de base des systèmes distribués (vocabulaire, architecture)
- comprendre les différentes couches réseaux IP, UDP, TCP, HTTP, couches ISO et savoir développer des applications distribuées utilisant ces protocoles ;
- comprendre les RPCs, son implémentation en Java, RMI, les concepts de Serialisation, Stub, Skeleton, Proxy et savoir développer des systèmes distribués utilisant RMI ;
- comprendre l'intérêt des conteneurs d'applications, en particulier la version Java nommé J2EE/EJB et savoir développer des applications distribuées utilisant ce modèle ;
- comprendre le concept de Modèle/Vue/Contrôleur dans le contexte des applications web dynamique, en particulier celui du monde Java/J2EE à base de Servlets et de JSP.
Pré-requis
La compréhension du cours nécessite les pré-requis suivants :
- Rudiments de réseau (notion d'adresse IP et de routage)
- Connaissance du shell Unix (pour les TPs)
- Connaissance basiques sur les systèmes d'exploitation
- Niveau raisonnable de programmation en Java
- Bonne maîtrise de l'IDE Eclipse
Plan du cours, supports de cours et de TP
- Prélude : Rappels Unix, Généralités Client/Serveur,
accès concurrent aux fichiers, fichiers mappés.
cours 1 en HTML5
,
cours 1 en PDF et version
imprimable.
- L'énoncé du TP 1
- Le projet Eclipse à importer
- Un tutoriel basique pour Eclipse
- Le corrigé du TP
- Le code Eclipse du corriger à importer
- Généralités sur les réseaux, Routage, IP, UDP
cours 2 en HTML5
,
cours 2 en PDF et version
imprimable.
- L'énoncé du TP 2
- Le projet Eclipse à importer.
- Le corrigé du TP 2
- Le code Eclipse à importer
- 26/9: TCP, programmation Multi-thread en Java, TCP en Java cours 3 en HTML5 , cours 3 en PDF et version imprimable. L'énoncé du TP 3 ainsi que le projet Eclipse à importer. Le corrigé du TP 3 ainsi que le code Eclipse à importer.
- Étude de cas, Java 8, Sérialisation
cours 4 en HTML5
,
cours 5 en PDF et version
imprimable.
Préparation au TP Noté :- L'énoncé
- Le code à compléter le projet Eclipse à importer.
- Un aide mémoire
- L'énoncé du TP 5
- Le projet Eclipse à importer
- Le corrigé du TP 5
- Le code Eclipse à importer.
- 4/11: RMI/RPC, Rappels sur JDBC
cours 6 en HTML5
,
cours 6 en
PDF
et version
imprimable.
- L'énoncé du TP 6
- Le projet Eclipse à importer.
- Le corrigé du TP 6
- Le code Eclipse à importer.
- 5/11: JavaServer Pages (1)
cours 7 en HTML5
,
cours 7 en
PDF
et version
imprimable.
- L'énoncé du TP 7
- Le projet Eclipse à importer.
- Le corrigé du TP 7 ainsi que le code Eclipse à importer.
- 12/11: JavaServer Pages (2)
cours 8 en HTML5
,
cours 8 en
PDF
et version
imprimable.
- L'énoncé du TP 8
- Le projet Eclipse à importer.
- Le fichier de création de tables et le fichier de remplissage.
- Le corrigé du TP 8 ainsi que le code Eclipse à importer.
-
L'énoncé du TP
9 ainsi que
le projet Eclipse à importer.
Utilisation de Postgresql depuis l'extérieur
Utilisation d'une base locale
Si vous voulez utiliser une base de données Postgresql locale (installée sur votre machine), vous devez y créer les tables demandées en TP (cf. TP8 par exemple qui vous donne les fichiers .sql de création de tables).
Il faut ensuite modifier le code Java de connexion à la base
de données :
Class.forName("org.postgresql.Driver");
cnx = DriverManager.getConnection("jdbc:postgresql://tp-postgres:5432/knguye10_a",
"knguye10_a","knguye10_a");
devient
Class.forName("org.postgresql.Driver");
cnx = DriverManager.getConnection("jdbc:postgresql://localhost:5432/MABASE",
"MONUSER","MONMOTDEPASSE");
et remplacer respectivement MABASE, MONUSER et
MONMOTDEPASSE par le nom de votre base, votre login et
votre mot de passe Postgresql (normalement créés lors de l'installation).
Utilisation de la base du PUIO
Vous pouvez aussi utiliser un tunnel SSH pour accéder à la base de données du PUIO en passant passant par la passerelle du PUIO.
Sous windows
Il faut télécharger le programme putty.exe. Une fois ce programme téléchargé, vous pouvez le lancer :
- Dans la partie Session→Hostname (or IP address): tp-ssh1.dep-informatique.u-psud.fr , Port : 22
- Dans le sous-menu Connection→SSH→ Tunnel : Source Port : 5432, Destination : tp-postgres:5432
Puis cliquer sur Open. Rentrer votre login et mot de passe Adonis (celui de votre mail que vous utilisez aussi pour vous connecter au PUIO). Le programme putty doit resté lancé tant que vous voulez travailler. Si vous perdez la connexion, il faut refaire les étapes ci-dessus.
Sous Linux ou MacOS
Exécuter la commande :
ssh -L 5432:tp-postgres:5432 -l monlogin@tp-ssh1.dep-informatique.u-psud.fr
où monlogin est votre login Adonis. Vous devrez alors saisir votre mot de passe.
Modification du code Java
Quelle que soit la méthode, vous devez ensuite modifier le code Java de cette manière là :
Class.forName("org.postgresql.Driver");
cnx = DriverManager.getConnection("jdbc:postgresql://tp-postgres:5432/knguye10_a",
"knguye10_a","knguye10_a");
devient
Class.forName("org.postgresql.Driver");
cnx = DriverManager.getConnection("jdbc:postgresql://localhost:5432/knguye10_a",
"knguye10_a","knguye10_a");
- Dans la partie Session→Hostname (or IP address): tp-ssh1.dep-informatique.u-psud.fr , Port : 22
- Dans le sous-menu Connection→SSH→ Tunnel : Source Port : 5432, Destination : tp-postgres:5432
Puis cliquer sur Open. Le programme putty doit resté lancé tant que vous voulez travailler. Si vous perdez la connexion, il faut refaire les étapes ci-dessus.