NFP214_030_JAVA_Avances.doc 07/07/09 Page 1 sur 46
CONCEPTS DE JAVA AVANCES
1. Introduction________________________________________ 3
2. La communication par socket __________________________ 4
2.1.
Pourquoi les sockets ? __________________________________ 4
2.2.
Définition d'un socket___________________________________ 4
2.3.
Le socket en JAVA______________________________________ 5
2.4.
Exemples ____________________________________________ 5
2.4.1.
Exemple 1 _____________________________________________________5
2.4.2.
Exemple 2 _____________________________________________________6
2.4.3.
Exemple 3 _____________________________________________________7
2.5.
L'atelier 5 ____________________________________________ 9
3. La sérialisation_____________________________________ 10
3.1.
Pourquoi la sérialisation ________________________________ 10
3.2.
Présentation du concept ________________________________ 10
3.2.1.
Les problématiques _____________________________________________10
3.2.2.
Les solutions __________________________________________________10
3.3.
Le support de sérialisation en Java _______________________ 11
3.3.1.
Utilisation de la sérialisation ______________________________________11
3.3.2.
Coder une classe sérialisable______________________________________12
3.3.3.
Un piége à éviter _______________________________________________13
3.3.4.
La simplicité de la serialization en Java______________________________14
3.3.5.
Le versionning _________________________________________________15
3.4.
Conclusion sur la sérialisation ___________________________ 15
3.5.
Appliquer à une communication socket ____________________ 15
3.6.
La sérialisation XML avec java.beans ______________________ 16
4. Le multi-threading __________________________________ 20
4.1.
Pourquoi les threads___________________________________ 20
4.2.
Définition d'un thread__________________________________ 20
4.3.
Les threads dans Java _________________________________ 20
4.4.
Exemple ____________________________________________ 21
4.5.
La synchronisation ____________________________________ 22
4.6.
Appliquer à une communication socket ____________________ 24
5. Les concepts essentiels du WEB________________________ 25
5.1.
Introduction _________________________________________ 25
5.2.
Principe_____________________________________________ 25
5.3.
Le Web _____________________________________________ 26
5.4.
L'URL ______________________________________________ 26
5.5.
HTML_______________________________________________ 26
5.6.
HTTP _______________________________________________ 27
5.6.1.
Etablissement de la connexion ____________________________________27
5.6.2.
Emission d'une requête __________________________________________27
5.6.3.
Envoi de la réponse _____________________________________________28
5.6.4.
Clôture de la connexion __________________________________________29
5.7.
MIME_______________________________________________ 29
5.8.
CGI ________________________________________________ 29
5.9.
APPLETS ____________________________________________ 30
5.10.
La sécurité d'une Applet_______________________________ 31
5.11.
Schéma général _____________________________________ 31
6. Les concepts en pratique d'un serveur HTTP en Java _______ 33
6.1.
La connexion par socket ________________________________ 33
6.2.
Traitement de la requête _______________________________ 33
6.2.1.
Un lien hypertexte ______________________________________________34
6.2.2.
L'envoi d'un fichier HTML_________________________________________34
6.2.3.
L'envoi d'un message d'alerte ou autre______________________________35
6.2.4.
Un formulaire__________________________________________________35
6.3.
Le chargement d'un Applet______________________________ 36
6.3.1.
Le plug-in Java ________________________________________________36
6.3.2.
Exemple d’applet _______________________________________________39
7. La mise en oeuvre d’une architecture WebServices : l’atelier
16 43
8. Log4j ____________________________________________ 44
Modifications apportées depuis la version précédente :
Le serialVersionUID dans la sérialisation
Ajout de l’atelier 16 montrant la mise en oeuvre d’une architecture WebServices
1. Introduction
L'objectif de ce chapitre est de découvrir des concepts avancés de Java utilisés dans la
réalisation d'applications complexes devant être déployées sur un réseau informatique.
Nous aborderons les points suivants :
la communication par socket de deux programmes informatiques
le principe de sérialisation permettant d'échanger des informations entre les
clients et le serveur
le multi-threading pour réaliser une exécution en parallèle des traitements
le chargement dynamique de classe Java
la réflexivité du langage Java
la conception d'un serveur de requête de socket, base de la conception des
serveurs HTTP
les Applets pour exécuter des IHM sur des postes clients
l'accès aux bases de données avec JDBC
l'utilisation et le principe des Servlets dans un serveur
l'invocation de méthodes distantes à travers le réseau avec RMI
la sécurité des programmes informatiques avec Java
Toutes ces notions étant susceptibles d’être rencontrées dans les travaux pratiques de
NFP 215,il est indispensable de les connaître.
2. La communication par socket
2.1. Pourquoi les sockets ?
Il s'agit d'un modèle permettant la communication inter processus (IPC - Inter Process
Communication) afin de permettre à divers processus de communiquer aussi bien sur
une même machine qu'à travers un réseau TCP/IP .
La communication par socket est souvent comparée aux communications humaines. On
distingue ainsi deux modes de communication:
Le mode connecté
(comparable à une communication téléphonique), utilisant le
protocole
TCP
. Dans ce mode de communication, une connexion durable est établie entre les deux
processus, de telle façon que l'adresse de destination n'est pas nécessaire à chaque envoi de
données.
Le mode non connecté
(analogue à une communication par courrier), utilisant le
protocole UDP
. Ce mode nécessite l'adresse de destination à chaque envoi, et aucun accusé
de réception n'est donné.
TCP/IP est une suite de protocoles. Le sigle TCP/IP signifie «Transmission Control
Protocol/Internet Protocol» et se prononce «T-C-P-I-P». Il provient des noms des
deux protocoles majeurs de la suite de protocoles, c'est-à-dire les protocoles TCP et IP).
TCP/IP représente d'une certaine façon l'ensemble des règles de communication sur
internet et se base sur la notion adressage IP, c'est-à-dire le fait de fournir une adresse
IP à chaque machine du réseau afin de pouvoir acheminer des paquets de données. Etant
donné que la suite de protocoles TCP/IP a été créée à l'origine dans un but militaire, elle
est conçue pour répondre à un certain nombre de critères parmi lesquels :
Le fractionnement des messages en paquets ;
L'utilisation d'un système d'adresses ;
L'acheminement des données sur le réseau (routage) ;
Le contrôle des erreurs de transmission de données.
La connaissance de l'ensemble des protocoles TCP/IP n'est pas essentielle pour un simple
utilisateur, au même titre qu'un téléspectateur n'a pas besoin de connaître le
fonctionnement de son téléviseur, ni des réseaux audiovisuels. Toutefois, sa
connaissance est nécessaire pour les personnes désirant administrer ou maintenir un
réseau TCP/IP.
2.2. Définition d'un socket
Le socket est un "canal" de communication bi-directionnel entre deux processus se
trouvant ou non sur la même machine. Il est caractérisé par :
une adresse IP (Inter Process)
un numéro de port
Pour créer un socket entre 2 processus, il faut que un des deux processus soit en attente
de demande de création d'un socket de la part de l'autre. On appelle le premier le
serveur de socket, le deuxième le client. L'initiative de fermer le socket est normalement
donnée au serveur bien que le client peut fermer lui aussi le socket.
Le socket est créé à l'initiative du client.
Sur un même serveur, on peut créer plusieurs sockets de port différent.
Sur un même serveur, on peut créer plusieurs sockets sur le même port à condition que
chaque connexion se fasse dans différents threads.
Une fois le socket créé, la communication se fait dans les 2 sens. On parle de "tube" de
communication.
L'adresse IP du socket est l'adresse IP du serveur.
2.3. Le socket en JAVA
Les classes utilisés sont Socket et ServerSocket du package java.net.
La classe ServerSocket permet côté serveur de se mettre en attente d'une demande de
création d'un socket.
La classe Socket permet côté client de créer le socket sur le serveur.
Des deux côté, la classe socket permet de définir un objet InputStream et
OutputStream permettant de lire ou d'écrire des informations dans le tube.
2.4. Exemples
2.4.1. Exemple 1
Le serveur attend une seule requête du client. Le client envoie une seule requête.
Le serveur :
import java.io.*;
import java.awt.*;
import java.net.*;
public class Serveur1
{
public static void main(String args[]) throws Exception
{
String str;
ServerSocket ssoc;
ssoc = new ServerSocket(9999);
System.out.println("En attente...");
Socket soc = ssoc.accept();
System.out.println("Socket accepte");
InputStream is = soc.getInputStream();
DataInputStream dis = new DataInputStream(is);
System.out.println("Lecture du socket");
str = dis.readUTF();
System.out.println("RECU: "+str);
soc.close();
}
}
Le client :
import java.awt.*;
import java.io.*;
import java.net.*;
public class Client1
{
static public void main(String args[]) throws Exception
{
System.out.println("Creation du socket");
Socket soc = new Socket("localhost",9999);
1 / 46 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !