You are on page 1of 93

Java avanc

Tuyt Trm DANG NGOC


Laboratoire PRiSM
Universit de Versailles-Saint-Quentin
<dntt@prism.uvsq.fr>
Cours CNAM, le 26 novembre 2003

Evolution de Java
Personal Java 1.0 / 1.1 / 1.2
Java2 SDK SE 1.3.0,
1.3.1, 1.4.0

OAK

JDK1.0

JDK 1.1

Plateforme Java
Java embarqu
Tuyt Trm DANG NGOC -

Java2 SDK
EE 1.2.1

Java2 SDK
EE 1.3.0

Java2 SDK ME (Micro


Edition)

FDT, I/O, Collection et Outils,


Applet + Thread, AWT + Swing,
TCP/ IP + UDP / IP, RMI, New I/O,
Expression rationnelle, Image I/O,
Java2D, Java3D, JAI, JMF, Son,
JCE, JSSE, JAAS

JSP + Servlet + JavaBeans,


EJB, RMI-IIOP and CORBA,
JNDI, JMS, JDBC, XML

Pour tlphones cellulaires


PDA, JINI, JIRO **

Plateforme Java2
Java1.0.2
1.0.2
Java
Java1.1.1
1.1.1, ,1.1.2,
1.1.2,1.1.3,
1.1.3,1.1.8
1.1.8
Java
Java1.2.2
1.2.2
Java

dimanche 29 mars 2015

Threads
Un thread -appel
parfois processus
lger - est un
unique flux de
contrle
squentiel dun
programme.
On peut utiliser
les threads afin
disoler des
tches.
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Vie et mort d'un thread

1. on cre le thread new;


2. on le dmarre start;
3. le thread sexcute alors, et reste vivant jusqu la fin de son code
excution, ou jusqu ce que ses mthodes stop ou destroy soient
invoques ;
4. durant son excution, le processus peux tre bloqu ou excutable.
Tuyt Trm DANG NGOC dimanche 29 mars 2015

Inactivit d'un thread


Un thread est bloqu (Not Runnable), dans les cas suivants :
1. sa mthode sleep a t invoque ;
2. le thread a appel la mthode wait afin dattendre la ralisation dun
certain vnement ;
3. le thread est en attente dune entre/sortie.
Suivant la cause de bloquage du thread, sa remise en activit peut-tre :
1. si un thread a t mis en sommeil, alors, le nombre de millisecondes
demandes devra tre coul ;
2. si un thread attend une condition, alors, un autre objet doit lavertir
du changement de la condition notify ou notifyAll ;
3. si un thread est bloqu en attente dune entre/sortie alors il faut
attendre que cette entre/sortie se libre.
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Comment crer un thread ?


Par
Pardrivation
drivationde
delalaclasse
classeThread
Thread

Par
Parimplmentation
implmentationde
del'interface
l'interfaceRunnable
Runnable

class
classMonThread
MonThreadextends
extendsThread
Thread
{{
////constructeur
constructeur
MonThread
MonThread(...)
(...)
{{
[...]
[...]
}}
////methode
methoderun
runaasurcharger
surcharger
public
publicvoid
voidrun()
run()
{{
[...]
[...]
}}
}}

class
classMonThread
MonThreadimplements
implementsRunnable
Runnable
{{
////constructeur
constructeur
MonThread
MonThread(...)
(...)
{{
[...]
[...]
}}
////methode
methoderun
runaaimplementer
implementer
public
publicvoid
voidrun()
run()
{{
[...]
[...]
}}
}}

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Communication sur IP

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Adresses IP / adresses DNS


Une adresse IP rfrence de
manire logique et unique
sur lInternet, linterface
dune machine.
Des mcanismes de
rsolution dadresse
permettent de convertir les
adresses IP en adresses
DNS et vice-versa.

Adresse IP
Adresse DNS
216.239.59.99 www.google.fr
192.93.0.1
ns1.nic.fr
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Ports
Le mcanisme de
port est utilis afin
de pouvoir
permettre de grer
plusieurs services
simultans depuis
une seule interface
rseau.

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Classes utilises pour la communication


Les classes orientes communication se trouvent
dans le paquetage java.net.
Les programmes Java peuvent utiliser TCP ou UDP
afin de communiquer sur lInternet.
classe de manipulation dadresses InetAddress
Les classes utilises spcifiquement pour TCP :
URL,URLConnection, Socket, ServerSocket;
Les classes utilises spcifiquement pour UDP :
DatagramPacket, DatagramSocket,
MulticastSocket.
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

URL

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Java Beans Coding Convention (1/2)


Convention pour les commentaires
Convention de nommage
class et interface (pas d'underscore, majuscule au dbut de chaque mot)
mthode (minuscule au dbut, majuscule au dbut de chaque mot)
variable (d'instance prfix par 'i', de classe par 'c', de paramtre par 'a', temporaire
sans, constante tout en capitale)

paquetage (tout en minuscule, dans le rpertoire associ)

Convention d'accs aux variables


rcuprer la valeur d'une variable d'instance (get suivi du nom de la
variable)

positionner la valeur d'une variable d'instance (set suivi du nom de la


variable)

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Java Beans Coding Convention (2/2)

Convention de constructeurs (avoir un constructeur par dfaut)


Convention d'initialisation (utiliser les conventions de variables et les set)
Convention d'importation (ne pas utiliser '*')
Srialisation (doit implmenter l'interface Serializable)
Convention d'vnement
Event handling methods:
void <eventOcurrenceMethodName>(<EventStateObjectType> evt);
Event handling methods with arbitrary argument list:
void <eventOcurrenceMethodName>(<ArbitraryParameterList>);
Multicast event delivery:
public void add<ListenerType>(<ListenerType> listener);
public void remove<ListenerType>(<ListenerType> listener);
Unicast event delivery:
public void add<ListenerType>(<ListenerType> listener) throws
java.util.TooManyListenersException;
public void remove<ListenerType>(<ListenerType> listener);

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Architecture J2EE

Cours CNAM, le 26 novembre 2003

Plan
Architectures
multi-tiers
: architecture
2,
Architectures multi-tiers
: architecture
1, 2,1,33-tiers
tiers
J2EE : architecture gnrale
Composants J2EE : Servlets, JSP, EJB, JMS,
JAAS, JAXP, JavaMail, JNDI, etc.
Outils de dveloppement et dintgration
Produits existants
Conclusion
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Architecture 1-tiers
Navigateur
Prsentation
Serveur Web
Traitement
donnes
Systme
de
fichiers
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Architecture 2-tiers
Navigateur
Prsentation
Serveur Web
Traitement

donnes
Base de
donnes
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Base de
donnes

Architecture 3-tiers

+Dimensionnement
+Maintenance
+Fiabilit
+Disponibilit
+Extensibilit
Gestion du
+dveloppement
-

complexit

Tuyt Trm DANG NGOC -

Navigateur
Prsentation

Serveur Web

Traitement

Serveur
dapplications

donnes
Base de
donnes
dimanche 29 mars 2015

Base de
donnes

Plan
Architectures multi-tiers : architecture 1, 2, 3tiers
J2EE
architecture
gnrale
J2EE ::architecture
gnrale
Composants J2EE : Servlets, JSP, EJB, JMS,
JAAS, JAXP, JavaMail, JNDI, etc.
Outils de dveloppement et dintgration
Produits existants
Conclusion
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Quest ce que la plateforme J2EE ?


Environnement Java
langage objet
simple
portable
robuste
indpendant de larchitecture (code virtuel)

Pour serveurs dapplications rparties


ensemble de services
ensemble de protocoles de communication
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Container J2EE
Container J2EE : Environnement dexcution
Java 2 permettant dhberger des composants
applicatifs et de contrler leur excution. Il
existe deux types de container :
Container J2EE Web : utiliss pour hberger des
servlets ou des pages JSP
Container J2EE EJB : supportant lexcution des
composants EJB

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Interfaces de container
Un container offre des interfaces constituant le contrat de
composant. Il gre :
des API de services : accs SGBD, annuaires, gestionnaire de
transactions...
des API de communication : protocole Internet, envois de
messages ou de mail, accs des objets distants...

Composants dapplication :
Servlets, JSP, EJB.

Descripteurs de dploiement :
Fichier XML dcrivant le composant dapplication
Inclut des informations additionnelles requises par le container
pour grer les composants dapplication

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Container

Dautres services
relatifs la vie du
composant : attente
de ressources,
ramasse-miette, etc.

Composant
Composant
dapplication
dapplication

Composant
Composant
dapplication
dapplication

Descripteur
Descripteur
de
dploiement
de dploiement

Descripteur
Descripteur
dedploiement
dploiement
de

Composant
Composant
dapplication
dapplication
Descripteur
Descripteur
dedploiement
dploiement
de

Composant
Composant
dapplication
dapplication
Descripteur
Descripteur
de
dploiement
de dploiement

API services du container

Tuyt Trm DANG NGOC -

Services dclaratifs

Autres services container

Contrat Container

Un ensemble dAPI
spcifis par le containair,
que les applications doivent
tendre ou implmenter

Services que le container


interpose sur les
applications, bass sur le
descripteur de dploiement
donn pour chaque
composant dapplication

Services additionnels
fournis par le container et
qui sont gnralement
requis par toutes les
dimanche 29applications
mars 2015 du container

Intgration J2EE

Container
ContainerJ2EE
J2EEWeb
Web
Base
de
donnes

Pages
JSP

Rpertoire
LDAP

HTTP

Servlets

IIOP-RMI

JDBC

Container
ContainerJ2EE
J2EEEJB
EJB

JCA

ERP

Enterprise
Bean
Enterprise
Enterprise
Bean
Bean
Enterprise
Bean

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Navigateur

Plan
Architectures multi-tiers : architecture 1, 2, 3tiers
J2EE : architecture gnrale
Composants
Composants J2EE
J2EE: Servlets,
: Servlets,
JSP,
JSP,
EJB,
EJB,
JMS,
JMS,
JAAS,
JAXP,
JavaMail,
JAAS,
JAXP,
JavaMail,
JNDI,JNDI,
etc. etc
Outils de dveloppement et dintgration
Produits existants
Conclusion
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Composants J2EE

Messagerie

Transaction
JavaBeans

Mail

Web

EJB

JSP Servlet

BluePrint
JTA/JTS
JMS

JavaMail

Container J2EE

Connecteurs

Outils
Applet JavaBeans

Guide de
programmation

Java 2 SDK Edition standard


JavaIDL, RMI-IIOP

Scurit
CORBA
Tuyt Trm DANG NGOC -

JAAS JDBC

JNDI

JAXP

Base de Nommage
donnes
dimanche
29 mars 2015 & Rpertoire

XML

API pour J2EE


Java Servlet 2.3 : services web
JSP 1.2 : prsentation des pages web
EJB 2.0 : les beans
JAF 1.0 : intgration des JavaBeans
JDBC 2.0 : accs aux bases de donnes
RMI-IIOP, RMI-JRMP, CORBA : accs et excution distants
JNDI 1.2 : gestion de noms et dannuaire
JMS 1.0 : gestion de messages
JTA/JTS 1.0 : gestion de transactions
JavaMail 1.2 : gestion du courrier lectronique
JAAS 1.0 : gestion de la scurit, authentification et droits daccs
JAXP 1.1 : gestion de documents XML

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Java Servlet
programmation ct serveur
permet dtendre les fonctionnalit du serveurs web
gre le protocole HTTP
construire des applications Web plus performantes
que les CGI
accde toutes les API des classes Java
ax sur la gnration du contenu
les programmeurs ne se soucient pas de la prsentation

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Cycle de vie dune servlet


init() : initialisation de la servlet Chargement
Code
Serveur
chargement du code.
Servlet
Souvent effectu lors de la premire
requte cliente (doGet, doPost)
Allocation dun pool de threads
Serveur
Client
doGet () : Traitement des requtes
Traitement
HTTP GET
Code
des requtes
doPut () :Traitement des requtes
Servlet
clientes
Client
HTTP PUT
par thread
doPost () :Traitement des requtes
HTTP POST
Code
Serveur
destroy () : destruction de la servlet
Servlet
par le serveur
Dchargement
Tuyt Trm DANG NGOC dimanche 29 mars 2015

GET /home.html
HTTP/1.0

HTTP/1.0 200 OK
Mime-version: 1.0
Content-type: text/html
<html>

User-Agent:
Mozilla/4.0
Accept: image/gif,
image/jpeg, text/*, */*

<head>

HTTP 1.0

Requte

Tuyt Trm DANG NGOC -

Servlet
Service( req,rep)

dimanche 29 mars 2015

Rponse

API Servlet

import javax.servlet.*;
import javax.servlet.http.*;

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Programmation des Servlets


import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
public class Hello extends HttpServlet
{
public void doGet (HttpServletRequest requete, HttpServletResponse reponse)
throws ServletException, IOException
{
// Rcupre le flux dcriture pour la rponse
PrintWriter out = reponse.getWriter () ;
// Prpare la rponse
reponse.setContentType ("text/html");
// Rcupre ladresse IP du client
String adresseDistante = requete.getRemoteAddr () ;

// Imprime la page HTML


out.println("<html>") ;
out.println("<title>Bienvenue !</title> <body>")
out.println("<h1>Bonjour !</h1>") ;
out.println("Votre adresse IP est identifi&eacute; comme :<b>" + adresseDistante + "</b>.") ;
out.println(</body></html>") ;

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Java Server Page (JSP)


Sparation entre la prsentation et le contenu des
pages web
Encapsul dans des pages HTML
Cration de contenu dynamique
Situ ct serveur
Ax sur la prsentation des donnes
Les webmasters ne se soucient pas de la programmation

Semblable HTML ou XML


bas sur des balises
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Directives
Balise de dclaration
Balise daffichage
Balise de scriplet
Balise de directive
Balise daction

Tuyt Trm DANG NGOC -

<%! ... %>


<%= ... %>
<% ... %>
<%@ ... %>
<jsp : ... />

dimanche 29 mars 2015

API JSP

import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Programmation JSP
<html>
<!-- Copyright (c) 1999 The Apache Software Foundation. All rights reserved.-->
<body bgcolor="white">
<! fixer les paramtres de la page
<%@ page language = JAVA session = false %>
<! dclarer une variable caractre
<% char c = 0 ; %>
<! scriptlet code Java
<%
for (int i =0 ; i < 26 ; i++) {
c = (char) (a) + i ;
%>
<! afficher c
<%= c %>
<% } %>
<jsp:useBean id='clock' scope='page' class='dates.JspCalendar' type="dates.JspCalendar" />
<font size=4>
<ul>
<li> Jour du mois <jsp:getProperty name="clock" property="dayOfMonth"/> </li>
<li> anne <jsp:getProperty name="clock" property="year"/> </li>
<li> mois <jsp:getProperty name="clock" property="month"/> </li>
<li> temps <jsp:getProperty name="clock" property="time"/> </li>
</ul>
</font>
</body>
</html>

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Enterprise Java Beans (EJB)


Modle client/serveur distribu
Code excut sur le serveur
proche des donnes
serveur souvent plus puissant que le client

Code localis sur le serveur


changer le code du serveur ne change pas le code du client

Un EJB est juste une collection de classes Java et dun


fichier XML. Les classes Java suivent un certains
nombre de rgles et fournissent des callbacks comme
dfinis dans lenvironnement J2EE et les spcifications
EJB.
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Container EJB
Un container EJB est un environnement dexcution pour un composant EJB.
Un EJB sexcute sur un container EJB.
Un container EJB sexcute par un serveur dapplications et prend la
responsabilit des problmes au niveau systme
Le container EJB gre le cycle de vie de lEJB.
Le container EJB fournit aussi un nombre de services additionnels
Gestion de la persistance
Transactions
Scurit
Cadre de travail pour Business Logic
Dimensionnement
Portabilit
Gestion des erreurs

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Beans entit
Un bean entit est un objet persistant
Un bean entit peut avoir plusieurs clients
Bean Managed Persistance (BMP) : le container
EJB est responsable de la persistance du bean.
Container Manager Persistance (CMP) : le bean
est responsable de sa propre persistance.

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Beans session
Un bean session pour chaque client
Il y a deux types de beans session
sans tat
pas d tat entre les invocations
rapide et efficace

avec tat
maintient les tats entre les invocations
persistance limite

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Structure EJB
Interface home
fournit un moyen pour le client EJB de rcuprer une
instance dun EJB

Interface distante
expose les mthodes que le client EJB peut utiliser

Code EJB
implmente linterface distante et linterface EJB
appropri (SessionBean ou EntityBean par exemple)

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

API EJB

import javax.ejb.* ;
import javax.ejb.spi.* ;

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Programmation EJB
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
public interface HomeDe extends EJBHome
{
De create() throws RemoteException, CreateException;
}
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
public interface De extends EJBObject
{
public int lancer() throws RemoteException;
}

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

import java.rmi.RemoteException ;
import javax.ejb.SessionBean ;
import javax.ejb.SessionContext ;
public class DeEJB implements SessionBean
{
public DeEJB() {}
public void ejbCreate() {}
public void ejbRemove() {}
public void ejbActivate(){}
public void ejbPassivate() {}
public void setSessionContext (SessionContext sc) {}
public int lancer(){}
}

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

JavaBeans Activation Framework (JAF)


Les services dactivation sont des composants
fondamentaux utiliss pour activer
automatiquement des objets en mmoire
ltat dormant suivant une requte cliente
JAF est un cadre de travail pour construire des
applications qui peuvent activer
automatiquement des objets pouvant
manipuler des donnes reues dans un flux
dentre
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

API JAF

import javax.activation.* ;

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Java Data Base Connectivity (JDBC)


JDBC permet aux applications daccder
des SGBD relationnels et de manipuler des
donnes provenant de ces bases
API Java
Calqu sur ODBC de Microsoft
Implmente le standard CLI de lX/OPEN

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Pilotes JDBC
Type 1 : Pont JDBC-ODBC fournit un accs JDBC API par
lintermdiaire dun ou plusieurs pilotes ODBC.
Type 2 : A native-API partly Java technology-enabled driver
convertit les appels JDBC en un applet sur lAPI client
(Oracle, Sybase, Informix, DB2, et autres SGBD)
Type 3 : A net-protocol fully Java technology-enabled driver
convertit les appels JDBC en un protocole indpendant traduit
ensuite en protocole du SGBD par un serveur
Type 4 : A native-protocol fully Java technology-enabled
driver convertit les appels JDBC directement dans le
protocoles de communication utilis par le SGBD
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

indpendant du constructeur

Ecoute distante

natif ct client

Java Application

dpendant du constructeur

SGBD

Java Application

Interface
serveur
SGBD

JDBC API
JDBC Type 1

JDBC API
JDBC Type 2

SGBD
Interface
serveur
SGBD

Interface SGBD
Client

Client natif ODBC


Interface SGBD
Client

Java Application
JDBC API
JDBC Type 3

Ecouteur SGBD
Interface
client
SGBD

Tuyt Trm DANG NGOC -

SGBD
Interface
serveur
SGBD

Java Application
JDBC API
JDBC Type 4

dimanche 29 mars 2015

SGBD
Interface
serveur
SGBD

API JDBC

import java.sql.*;

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Programmation JDBC
private void executer (String driver, String chaine_connexion, String login, String password)
{
// On charge le driver
Class.forName (driver) ;
// on se connecte
conn = DriverManager.getConnection (chaine_connexion, login, password) ;
// on initialise le curseur
stmt = conn.createStatement () ;
// execution dune chaine SQL sur le SGBD
String SQL = "SELECT * from essai" ;
ResultSet rs = stmt.executeQuery (SQL) ;
ResultSetMetaData rsetdata = rs.getMetaData() ;
System.out.println (rsetdata.getColumnName(1) + "\t" + rsetdata.getColumnName(2)) ;
while (rs.next ())
{
// On recupere le premier champ qui est une chaine puis le deuxieme
System.out.println (rs.getString (1) + "\t" + rs.getInt (2)) ;
}
stmt.close () ;
conn.close () ;
}

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

RMI-IIOP, RMI-JRMP, CORBA


RMI et CORBA sont des
architectures complexes
permettant dinvoquer un
objet distant gr par une
autre machine virtuelle
comme sil tait local.

GIOP
RMI

CORBA : gnrique langage


objets
RMI : spcifique Java

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

IIOP
TCP/IP

Remote method Invocation (RMI)


Objet distant localis par
lAPI JNDI
Registre associe au nom
objet une rfrence
stub reprsente linterface
sur le client. Agit comme
proxy de lobjet distant
squelette (skeleton) sur le
serveur pour recevoir les
messages et invoquer
lobjet serveur
Gnration de stub et
skeleton laide de rmic

client
RMI

serveur
RMI

Interface
RMI

Squelette
RMI

Stub RMI
Couche de rfrence distante
Couche transport RMI
TCP/IP

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Common Object Request Broker Architecture

(CORBA)
GIOP (General Inter-ORB Protocol) : Le protocole
de plus haut-niveau de communication CORBA qui
convertit des messages crs par les stubs en format
transport-message capable de communiquer entre les
implmentations ORB (Object Request Broker).
IIOP (Internet Inter-ORB Protocol) : Le protocole de
plus bas niveau utilis par CORBA ;cest une couche
transport dcrivant comment les messages GIOP sont
transmis au dssus de TCP/IP.

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Architecture CORBA
Portable Object Adapter
(POA)
Object Request Broker
(ORB )

Client
refrence
refrence
objet
objet

ORB

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Serveur
objet
objet

ORB

API CORBA, RMI

import javax.rmi.* ;
import javax.rmi.CORBA ;
import org.omg.CORBA.* ; // RMI-IIOP, IDL
import org.omg.CosNaming.* ; // RMI-IIOP, IDL

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Programmation RMI
// Fichier Bonjour.java : Interface du service 'Bonjour'
import java.rmi.Remote ;
import java.rmi.RemoteException ;
public interface Bonjour extends Remote
{
String disBonjour (String nom) throws RemoteException ;
}
// Fichier 'BonjourImpl.java': implementation de l'interface 'Bonjour definie dans 'Bonjour.java'.
import java.rmi.RemoteException ;
import java.rmi.server.UnicastRemoteObject ;
public class BonjourImpl extends UnicastRemoteObject implements Bonjour
{
public BonjourImpl () throws RemoteException
{ super () ;}
public String disBonjour (String nom)
{ return "Bonjour " + nom + " !" ;}
}

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

// Enregistre lobjet Bonjour dans le registry du serveur local


import java.rmi.Naming ;
import java.rmi.RMISecurityManager ;
public class ServiceBonjour
{
public static void main (String args[])
throws Exception
{
BonjourImpl obj = new BonjourImpl () ;
Naming.rebind ("rmi://localhost/ObjetBonjour", obj) ;
System.out.println ("Enregistre sous le nom 'ObjetBonjour'") ;
}
}

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

// Fichier 'BonjourCLient.java' : contacte le registry a l'URL donne et recupere la reference de l'objet.


import java.rmi.Naming ;
import java.rmi.RemoteException ;
public class BonjourClient
{
public static void main (String argv [])
throws Exception
{
String message = null ;
Bonjour obj = null ;
obj = (Bonjour) Naming.lookup ("rmi://gibet.prism.uvsq.fr/ObjetBonjour") ;
message = obj.disBonjour (argv [0]) ;
System.out.println ("Le serveur a dit : '" + message + ".") ;
}
}

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Java Naming and Directory Interface (JNDI)


JNDI permet daccder de nombreux services de noms et
dannuaire.
En utilisant JNDI, un objet Java peut stocker et rcuprer des
objets de nimporte quel type
JNDI fournit des mthodes pour effectuer nimporte quelle
opration standard sur un annuaire : associer des attributs un
objet ou chercher un objet par ses attributs.
JNDI permet aux applications Java de bnficier de toutes les
informations dannuaires comme LDAP, NDS, DNS et NIS (YP)
et permet Java de cohabiter avec des applications existantes.
Enregistrement dynamique de services et de clients
Traitement point point

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Architecture JNDI
Application Java
API JNDI
Gestionnaire de nommages et dannuaire
JNDI SPI
SPI Systme
de fichiers
Systmede
de
Systme
Systme
de
fichiers
fichiers
fichiers

SPI
nommage
CORBA
CosNaming
CosNaming
CORBA
CORBA

Tuyt Trm DANG NGOC -

SPI LDAP

Services
Services
LDAP
LDAP

SPI RMI

Services
Services
RMI
RMI

dimanche 29 mars 2015

Autres SPI

Autresservices
services
Autres
(DNS,NDS,
NDS,
(DNS,
NIS)
NIS)

API JNDI

import javax.naming.* ;
import javax.naming.directiry.* ;
import javax.naming.event.* ;
import javax.naming.ldap.* ;
import javax.naming.spi.* ;

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Programmation
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
class ClientDe
{
// Cre une instance EJB d sur le serveur EJB et appelle ensuite la mthode lancer ()
// et enfin affiche le rsultat du lanc de d
public static void main (String[] args)
{
try
{
InitialContext jndiContext = new InitialContext ();
ref = jndiContext.lookup (jeux/De");
DeHome home= (EnsDe) PortableRemoteObject.narrow (ref, DeHome.class);
De de = home.create () ; // Cre un objet De depuis linterface EnsCalculateur
System.out.println (de.lancer (0.2, 1000, vert));
}
catch (Exception e)
{
System.out.println(e.toString());
}
}
}

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Java Message Service (JMS)


JMS dfini un mcanisme standard permettant aux
composants denvoyer et de recevoir des messages de
faon asynchrone
Fournit un service flexible et sr pour lchange
asynchrone de donnes et dvnements
commerciaux critiques travers une entreprise
LAPI JMS y ajoute une API commune et un cadre de
travail permettant le dveloppement de messages
portables bass en Java
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Synchrone
envoy une fois, non garanti datteindre le serveur
perdu si non reu

Asynchrone
Envoy jusqu acquittement
Mise en file dattente jusqu ce que le message
soit reu

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

message
message
Client1

Envoie

file
dattente

Consomme
Client2
Acquitte

Souscrit

message
Client1

Publie

Tuyt Trm DANG NGOC -

Dlivre
message
thme

Client2

Souscrit
Dlivre
message

dimanche 29 mars 2015

Client3

Cas dutilisation de JMS


Systme faiblement coupl
Sans connexion
Supprime les dpendances entre le client et la plateforme
serveur (langage de programmation, version)

Publication souscription
Envoie, reoit des information avec un ou plusieurs clients
non identifis

Intgration avec dautres systmes de messageries


IBM MQ-Series
Microsoft Message Queue
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

API JMS

import javax.jms.* ;

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Java Transaction Support/API (JTS/JTA)


JTA et JTS permettent aux applications J2EE
daffranchir le dveloppeur de composant de la
gestion des transactions
Les dveloppeurs peuvent dfinir les proprits
transactionnelles des composants JavaBeans pendant
la conception et le dploiement laide dtats
dclaratifs dans le descripteur de dploiement.
Le serveur dapplications prend la responsabilit de
la gestion des transactions
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Exemple de droulement de transaction


begin transaction
...
update table-a
...
if (condition-x)
commit
transaction
else if (condition-y)
update table-b
commit
transaction
else
rollback transaction
begin transaction
update table-c
commit transaction

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

API JTA

import javax.transaction ;
import javax.transaction.xa ;

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Programmation JTA
import javax.transaction.UserTransaction ;
[...]
public void withdrawCash(double amount) {
UserTransaction ut = context.getUserTransaction();
try
{
ut.begin(); updateChecking(amount);
machineBalance -= amount; insertMachine(machineBalance);
ut.commit();

}
catch (Exception ex)
{
try
{
ut.rollback();
}
catch (SystemException syex)
{
throw new EJBException ("Rollback failed: " + syex.getMessage());
}
throw new EJBException ("Transaction failed: " + ex.getMessage());
}
}
[...]

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

JavaMail
JavaMail 1.2 dfinit un ensemble dinterface de
classe permettant de construire des applications sur
les technologies de courrier lectronique
Gestion des standards de courrier
SMTP : protocole de transport de courrier lectronique
POP : rcupration du courrier sur serveur distant
IMAP : gestion de botes aux lettres distantes
MIME : standard de codage du contenu de courrier
permettant notamment lattachement de documents de tout
format et lutilisation de langues diffrentes
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

API JavaMail

import javax.mail.* ;
import javax.mail.event.* ;
import javax.mail.internet.* ;
import javax.mail.search.* ;

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Programmation JavaMail
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;

if(!sendmultipart)
{
// send a plain text message
msg.setContent(msgText, "text/plain");
}
else
{
// send a multipart message// create and fill the first message
part
MimeBodyPart mbp1 = new MimeBodyPart();
mbp1.setContent(msgText, "text/plain");
// create and fill the second message part
MimeBodyPart mbp2 = new MimeBodyPart();
mbp2.setContent(msgText2, "text/plain");
// create the Multipart and its parts to it
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp1);
mp.addBodyPart(mbp2);
// add the Multipart to the message
msg.setContent(mp);
}
Transport.send(msg);
}
catch(MessagingException mex)
{
mex.printStackTrace();
}
return "Email envoy " + emailto;

public class SendEmail


{
public String SendMessage(String emailto, String emailfrom,
String smtphost, String emailmultipart, String msgSubject,
String msgText)
{
String msgText2 = "multipart message";
boolean sendmultipart = Boolean.valueOf(emailmultipart).booleanValue();
// set the host
Properties props = new Properties();
props.put("mail.smtp.host", smtphost);
// create some properties and get the default Session
Session session = Session.getDefaultInstance(props, null);
try
{
// create a message
Message msg = new MimeMessage(session);
// set the from
InternetAddress from = new InternetAddress(emailfrom);
msg.setFrom(from);
InternetAddress[] address =
{
new InternetAddress(emailto)
};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(msgSubject);

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Java Authentification and Authorization Service


(JAAS)
Authentification : dterminer qui excute le code Java
(application, applet, bean, servlet)
Autorisation : vrifier si celui qui excute le
programme a les permissions ncessaires pour le faire
Modules dauthentification disponibles
JNDI
UNIX
Windows NT
Kerberos
KeyStore

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

API JAAS
import javax.security.auth ;
import javax.security.auth.callback ;
import javax.security.auth.login ;
import javax.security.auth.spi ;

grant <signer(s) field>, <codeBase URL>


<Principal field(s)> {
permission perm_class_name "target_name",
"action";
...
permission perm_class_name "target_name",
"action";
};

Java.policy

<Principal field> := Principal Principal_class "principal_nam

import javax.security.* ;
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Programmation JAAS (authentification)


import java.io.IOException;
import javax.security.auth.*;
import javax.security.auth.callback.*;
import javax.security.auth.login.*;
import javax.security.auth.spi.*;
public class SampleLoginModule implements LoginModule {
public boolean abort () {
// Method to abort the authentication process (phase 2).
}
public boolean commit() {
// Method to commit the authentication process (phase 2).
}
public void initialize(Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options) {
// Initialize this LoginModule.
}
public boolean login() {
// Method to authenticate a Subject (phase 1).
}
public boolean logout() {
// Method which logs out a Subject.
}

}
grant codebase "file:SampleLoginModule.jar" {
permission javax.security.auth.AuthPermission "modifyPrincipals";
};

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Programmation JAAS (autorisation)


import java.io.File;
import java.security.PrivilegedAction;
public class SampleAction implements PrivilegedAction {
public Object run() {
System.out.println("\nYour java.home property value is: " +
System.getProperty("java.home"));
System.out.println("\nYour user.home property value is: " +
System.getProperty("user.home"));
File f = new File("foo.txt");
System.out.print("\nfoo.txt does ");
if (!f.exists())
System.out.print("not ");
System.out.println("exist in the current working directory.");
return null; }
}
}

grant codebase "file:./SampleAction.jar", Principal sample.principal.SamplePrincipal "testUser" {


permission java.util.PropertyPermission "java.home", "read";
permission java.util.PropertyPermission "user.home", "read";
permission java.io.FilePermission "foo.txt", "read";
};

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Java API for XML Processing (JAXP)


SAX : gestion de flux dvnements XML
DOM : structure de document XML en
mmoire sous forme darbre
XSLT : prsentation de documents XML
daprs des feuilles de style XSL

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

XML SAX -DOM

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

API XML
import javax.xml.parsers ;
import javax.xml.transform ;
import javax.xml.transform.dom ;
import javax.xml.transform.sax ;
import javax.xml.transform.stream ;
import org.xml.sax ;
import org.xml.sax.ext ;
import org.xml.sax.helpers ;
import org.w3c.dom ;
import org.w3c.dom.html ;
import org.w3c.dom.range ;
import org.w3c.dom.traversal ;
Tuyt Trm DANG NGOC dimanche 29 mars 2015

Java pour XML


JAXP : Java API for XML Parsing
assure interface avec analyseur de documents produisant
des formats DOM ou SAX

JAXB : Java Architecture for XML Binding


permet de construire des documents XML partir dobjets
Java et vice versa

JAXM : Java API for XML Messenging


permet lchange de messages XML avec des plateformes
distantes en synchrone ou asynchrone

JAXR : Java API for XML Registries


interface daccs aux annuaires de services applicatifs

JAX-RPC : JAVA API for XML-based RPC


appels
desNGOC
procdures
distance
avec
Tuyt Trm
DANG
dimanche 29 mars
2015 XML

Plan
Architectures multi-tiers : architecture 1, 2, 3tiers
J2EE : architecture gnrale
Composants J2EE : Servlets, JSP, EJB, JMS,
JAAS, JAXP, JavaMail, JNDI, etc.
Outils
dedveloppement
dveloppementetetdintgration
dintgration
Outils de
Produits existants
Conclusion
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

J2EE SDK
J2EE SDK est une dfinition oprationnelle de la plateforme
J2EE
Fait par Sun Microsystem pour les dmonstrations, les
prototypes et les applications non-commerciales
Contient :
J2EE Application Server
Serveur Web
Base de donnes relationnelles
API J2EE
un kit de dveloppement et de dploiement

But : permettre aux dveloppeurs dexcuter leurs


applications J2EE et vrifier leur compatibilit
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Dploiement J2EE
JAR Java ARchive
Fichier classe Java
EJB

WAR - Web ARchive


Servlets
JSP

EAR - Enterprise ARchive


Contient des JARs et WARs pour former une application
complte

Descripteurs de dploiement
XML

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Plan
Architectures multi-tiers : architecture 1, 2, 3tiers
J2EE : architecture gnrale
Composants J2EE : Servlets, JSP, EJB, JMS,
JAAS, JAXP, JavaMail, JNDI, etc.
Outils de dveloppement et dintgration
Produits
existants
Produits existants
Conclusion
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Serveurs J2EE
Apache Tomcat, http://jakarta.apache.org/
BEA WebLogic, http://www.bea.com/
IBM WebSphere
Sun iPlanet Application Server http://java.sun.com/
Oracle Application Server http://www.oracle.com
Caucho Resin, http://www.caucho.com/
Allaire JRun, http://www.allaire.com/
Orion, http://www.orionserver.com/
SilverStream Application Server
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Plan
Architectures multi-tiers : architecture 1, 2, 3tiers
J2EE : architecture gnrale
Composants J2EE : Servlets, JSP, EJB, JMS,
JAAS, JAXP, JavaMail, JNDI, etc.
Outils de dveloppement et dintgration
Produits existants
Conclusion
Conclusion
Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Exemple dapplication en entreprise


soumission
dune fiche
de renseignement

Vrification
des donnes
Servlet
de fiches

insertion
de la fiche

Message
derreur

gnration de
page derreur
JSP
Tuyt Trm DANG NGOC -

Construction de
la requte dinsertion
JDBC

Insertion

SGBD

dimanche 29 mars 2015

Exemple dapplication en entreprise


Navigateur
Compsants
Compsants
graphiques
graphiques

Servlet
Servlet

Requte HTTP

JSP
JSP

fichier HTML

EJB

BeanSession
Session
Bean

BeanSession
Session
Bean
Bean
Bean
Entit
Entit
Bean
Bean
Entit
Entit

Base de donnes
relationnelles

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

Mainframe

Serveurs
de donnes

JDBC

Serveur Web Serveur


dapplications

Client

Exemple dapplication en entreprise


rcuprer
classes

recuprer classes
Servlet
de classes
Listes de
classes
prsentation
liste de classes
JSP
Tuyt Trm DANG NGOC -

renvoie
classes
voir
notifica
tions

rcuprer
classes
EJB
Classes

JMS

dimanche 29 mars 2015

EIS
renvoie
classes
pas de
notifica
tions

Architecture scurise (JCA)


Service de
cryptographie
Interface et classe de
certificat
Classe et interface de
gestion de clef

Tuyt Trm DANG NGOC -

dimanche 29 mars 2015

You might also like