+ All Categories
Home > Documents > J2EE.ppt

J2EE.ppt

Date post: 02-Oct-2015
Category:
Upload: kawtarkawtar
View: 3 times
Download: 2 times
Share this document with a friend
93
Java avancé Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin <[email protected]> Cours CNAM, le 26 novembre 2003
Transcript
  • Java avancTuyt Trm DANG NGOC

    Laboratoire PRiSMUniversit de Versailles-Saint-Quentin

    Cours CNAM, le 26 novembre 2003

    *

    Evolution de JavaOAKJDK1.0JDK 1.1Java2 SDK EE 1.2.1Java2 SDK EE 1.3.0Plateforme JavaPlateforme Java2Personal Java 1.0 / 1.1 / 1.2Java embarquJava2 SDK SE 1.3.0, 1.3.1, 1.4.0Java2 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, JAASJSP + Servlet + JavaBeans, EJB, RMI-IIOP and CORBA, JNDI, JMS, JDBC, XMLPour tlphones cellulaires PDA, JINI, JIRO ** Java 1.0.2Java 1.1.1 , 1.1.2, 1.1.3, 1.1.8Java 1.2.2

    *

    ThreadsUn thread -appel parfois processus lger - est un unique flux de contrle squentiel dun programme.On peut utiliser les threads afin disoler des tches.

    *

    Vie et mort d'un thread1. 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.

    *

    Inactivit d'un threadUn thread est bloqu (Not Runnable), dans les cas suivants :sa mthode sleep a t invoque ;le thread a appel la mthode wait afin dattendre la ralisation dun certain vnement ;le thread est en attente dune entre/sortie.

    Suivant la cause de bloquage du thread, sa remise en activit peut-tre :si un thread a t mis en sommeil, alors, le nombre de millisecondes demandes devra tre coul ;si un thread attend une condition, alors, un autre objet doit lavertir du changement de la condition notify ou notifyAll ;si un thread est bloqu en attente dune entre/sortie alors il faut attendre que cette entre/sortie se libre.

    *

    Comment crer un thread ?class MonThread extends Thread{// constructeurMonThread (...){[...]}// methode run a surchargerpublic void run(){[...]}}class MonThread implements Runnable{// constructeurMonThread (...){[...]}// methode run a implementerpublic void run(){[...]}}Par drivation de la classe ThreadPar implmentation de l'interface Runnable

    *

    Communication sur IP

    *

    Adresses IP / adresses DNSUne 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 IPAdresse DNS216.239.59.99www.google.fr192.93.0.1ns1.nic.fr

    *

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

    *

    Classes utilises pour la communicationLes 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 InetAddressLes classes utilises spcifiquement pour TCP : URL,URLConnection, Socket , ServerSocket ;Les classes utilises spcifiquement pour UDP : DatagramPacket , DatagramSocket , MulticastSocket.

    *

    URL

    *

    Java Beans Coding Convention (1/2)Convention pour les commentairesConvention de nommageclass 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 variablesrcuprer 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)

    *

    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'vnementEvent handling methods: void ( evt); Event handling methods with arbitrary argument list: void (); Multicast event delivery: public void add( listener); public void remove( listener); Unicast event delivery: public void add( listener) throws java.util.TooManyListenersException; public void remove( listener);

  • Architecture J2EECours CNAM, le 26 novembre 2003

    *

    PlanArchitectures multi-tiers : architecture 1, 2, 3-tiersJ2EE : architecture gnraleComposants J2EE : Servlets, JSP, EJB, JMS, JAAS, JAXP, JavaMail, JNDI, etc.Outils de dveloppement et dintgrationProduits existants Conclusion

    Architectures multi-tiers : architecture 1, 2, 3-tiers

    *

    Architecture 1-tiersPrsentationTraitementdonnesNavigateurServeur WebSystme de fichiers

    *

    Architecture 2-tiersPrsentationTraitementdonnesNavigateurServeur WebBase de donnesBase de donnes

    *

    Architecture 3-tiersDimensionnementMaintenanceFiabilitDisponibilitExtensibilitGestion du dveloppement

    complexitPrsentationTraitementdonnesNavigateurServeur WebBase de donnesBase de donnesServeur dapplications

    *

    PlanArchitectures multi-tiers : architecture 1, 2, 3-tiersJ2EE : architecture gnraleComposants J2EE : Servlets, JSP, EJB, JMS, JAAS, JAXP, JavaMail, JNDI, etc.Outils de dveloppement et dintgrationProduits existants Conclusion

    J2EE : architecture gnrale

    *

    Quest ce que la plateforme J2EE ?Environnement Javalangage objet simpleportablerobusteindpendant de larchitecture (code virtuel)Pour serveurs dapplications rpartiesensemble de servicesensemble de protocoles de communication

    *

    Container J2EEContainer 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 JSPContainer J2EE EJB : supportant lexcution des composants EJB

    *

    Interfaces de containerUn 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 dapplicationInclut des informations additionnelles requises par le container pour grer les composants dapplication

    *

    ContainerContrat ContainerDescripteurde dploiementComposantdapplicationServices dclaratifsAPI services du containerAutres services containerDescripteurde dploiementComposantdapplicationDescripteurde dploiementComposantdapplicationDescripteurde dploiementComposantdapplicationUn ensemble dAPI spcifis par le containair, que les applications doivent tendre ou implmenterServices additionnels fournis par le container et qui sont gnralement requis par toutes les applications du containerServices que le container interpose sur les applications, bass sur le descripteur de dploiementdonn pour chaque composant dapplicationDautres services relatifs la vie du composant : attente de ressources, ramasse-miette, etc.

    *

    Intgration J2EEContainer J2EE Web

    HTTPJDBCContainer J2EE EJB

    Enterprise BeanEnterprise BeanIIOP-RMILDAPJCABasededonnesRpertoirePagesJSPServletsNavigateur

    *

    PlanArchitectures multi-tiers : architecture 1, 2, 3-tiersJ2EE : architecture gnraleComposants J2EE : Servlets, JSP, EJB, JMS, JAAS, JAXP, JavaMail, JNDI, etc.Outils de dveloppement et dintgrationProduits existants Conclusion

    Composants J2EE : Servlets, JSP, EJB, JMS, JAAS, JAXP, JavaMail, JNDI, etc

    *

    Composants J2EEOutilsAppletJavaBeansJavaIDL, RMI-IIOPJAASJDBCJNDIJAXPEJBJSPServletJTA/JTSJavaMailJMSConnecteursContainer J2EEBluePrintJava 2 SDK Edition standard

    *

    API pour J2EEJava Servlet 2.3 : services webJSP 1.2 : prsentation des pages webEJB 2.0 : les beansJAF 1.0 : intgration des JavaBeansJDBC 2.0 : accs aux bases de donnesRMI-IIOP, RMI-JRMP, CORBA : accs et excution distantsJNDI 1.2 : gestion de noms et dannuaireJMS 1.0 : gestion de messagesJTA/JTS 1.0 : gestion de transactionsJavaMail 1.2 : gestion du courrier lectroniqueJAAS 1.0 : gestion de la scurit, authentification et droits daccsJAXP 1.1 : gestion de documents XML

    *

    Java Servletprogrammation ct serveurpermet dtendre les fonctionnalit du serveurs webgre le protocole HTTPconstruire des applications Web plus performantes que les CGIaccde toutes les API des classes Javaax sur la gnration du contenules programmeurs ne se soucient pas de la prsentation

    *

    Cycle de vie dune servletinit() : initialisation de la servletchargement du code.Souvent effectu lors de la premirerequte cliente (doGet, doPost)Allocation dun pool de threadsdoGet () : Traitement des requtes HTTP GETdoPut () :Traitement des requtes HTTP PUTdoPost () :Traitement des requtes HTTP POSTdestroy () : destruction de la servletpar le serveur

    *

    HTTP 1.0RequteRponse

    HTTP/1.0 200 OKMime-version: 1.0Content-type: text/html

    GET /home.html HTTP/1.0User-Agent: Mozilla/4.0 Accept: image/gif, image/jpeg, text/*, */*ServletService( req,rep)

    *

    API Servletimport javax.servlet.*;import javax.servlet.http.*;

    *

    Programmation des Servletsimport 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 HTMLout.println("") ;out.println("Bienvenue ! ")out.println("Bonjour !") ;out.println("Votre adresse IP est identifi comme :" + adresseDistante + ".") ;out.println(") ; }}

    *

    Java Server Page (JSP)Sparation entre la prsentation et le contenu des pages webEncapsul dans des pages HTMLCration de contenu dynamiqueSitu ct serveurAx sur la prsentation des donnesLes webmasters ne se soucient pas de la programmationSemblable HTML ou XMLbas sur des balises

    *

    DirectivesBalise de dclarationBalise daffichageBalise de scripletBalise de directive Balise daction

    *

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

    *

    Programmation JSP

    Jour du mois anne mois temps

    *

    Enterprise Java Beans (EJB)Modle client/serveur distribuCode excut sur le serveurproche des donnesserveur souvent plus puissant que le clientCode localis sur le serveurchanger le code du serveur ne change pas le code du clientUn 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.

    *

    Container EJBUn 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 systmeLe container EJB gre le cycle de vie de lEJB.Le container EJB fournit aussi un nombre de services additionnelsGestion de la persistanceTransactionsScuritCadre de travail pour Business LogicDimensionnementPortabilitGestion des erreurs

    *

    Beans entitUn bean entit est un objet persistantUn bean entit peut avoir plusieurs clientsBean 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.

    *

    Beans sessionUn bean session pour chaque clientIl y a deux types de beans sessionsans tatpas dtat entre les invocationsrapide et efficaceavec tatmaintient les tats entre les invocationspersistance limite

    *

    Structure EJBInterface homefournit un moyen pour le client EJB de rcuprer une instance dun EJBInterface distanteexpose les mthodes que le client EJB peut utiliserCode EJBimplmente linterface distante et linterface EJB appropri (SessionBean ou EntityBean par exemple)

    *

    API EJBimport javax.ejb.* ;import javax.ejb.spi.* ;

    *

    Programmation EJBimport 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;}

    *

    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(){}}

    *

    JavaBeans Activation Framework (JAF)Les services dactivation sont des composants fondamentaux utiliss pour activer automatiquement des objets en mmoire ltat dormant suivant une requte clienteJAF est un cadre de travail pour construire des applications qui peuvent activer automatiquement des objets pouvant manipuler des donnes reues dans un flux dentre

    *

    API JAFimport javax.activation.* ;

    *

    Java Data Base Connectivity (JDBC)JDBC permet aux applications daccder des SGBD relationnels et de manipuler des donnes provenant de ces bases API JavaCalqu sur ODBC de MicrosoftImplmente le standard CLI de lX/OPEN

    *

    Pilotes JDBCType 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 serveurType 4 : A native-protocol fully Java technology-enabled driver convertit les appels JDBC directement dans le protocoles de communication utilis par le SGBD

    *

    Java ApplicationJDBC APIJDBC Type 1Client natif ODBCInterface SGBD ClientSGBDInterface serveur SGBDJava ApplicationJDBC APIJDBC Type 2Interface SGBD ClientSGBDInterface serveur SGBDJava ApplicationJDBC APIJDBC Type 4SGBDInterface serveur SGBDJava ApplicationJDBC APIJDBC Type 3SGBDInterface serveur SGBDEcouteur SGBDInterface client SGBDindpendant du constructeurdpendant du constructeurnatif ct clientEcoute distante

    *

    API JDBCimport java.sql.*;

    *

    Programmation JDBCprivate void executer (String driver, String chaine_connexion, String login, String password){// On charge le driverClass.forName (driver) ;

    // on se connecteconn = DriverManager.getConnection (chaine_connexion, login, password) ;

    // on initialise le curseurstmt = conn.createStatement () ;

    // execution dune chaine SQL sur le SGBDString 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 () ;}

    *

    RMI-IIOP, RMI-JRMP, CORBARMI et CORBA sont des architectures complexes permettant dinvoquer un objet distant gr par une autre machine virtuelle comme sil tait local.CORBA : gnrique langage objetsRMI : spcifique JavaGIOPIIOPTCP/IPRMI

    *

    Remote method Invocation (RMI)Objet distant localis par lAPI JNDIRegistre associe au nom objet une rfrencestub reprsente linterface sur le client. Agit comme proxy de lobjet distantsquelette (skeleton) sur le serveur pour recevoir les messages et invoquer lobjet serveurGnration de stub et skeleton laide de rmicCouche de rfrence distanteCouche transport RMITCP/IPInterface RMI Stub RMISquelette RMIclient RMIserveur RMI

    *

    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.

    *

    Architecture CORBAPortable Object Adapter (POA) Object Request Broker (ORB )

    ClientrefrenceobjetobjetServeurORBORB

    *

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

    *

    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 + " !" ;}}

    *

    // Enregistre lobjet Bonjour dans le registry du serveur localimport 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'") ; }}

    *

    // 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 + ".") ; } }

    *

    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 typeJNDI 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 clientsTraitement point point

    *

    Architecture JNDISystme de fichiersApplication JavaAPI JNDIGestionnaire de nommages et dannuaireJNDI SPISPI Systme de fichiersSPI nommage CORBASPI LDAPSPI RMIAutres SPISystme de fichiersServices LDAPServices RMICosNaming CORBAAutres services (DNS, NDS, NIS)

    *

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

    *

    Programmationimport 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()); }} }

    *

    Java Message Service (JMS)JMS dfini un mcanisme standard permettant aux composants denvoyer et de recevoir des messages de faon asynchroneFournit un service flexible et sr pour lchange asynchrone de donnes et dvnements commerciaux critiques travers une entrepriseLAPI JMS y ajoute une API commune et un cadre de travail permettant le dveloppement de messages portables bass en Java

    *

    Synchroneenvoy une fois, non garanti datteindre le serveurperdu si non reuAsynchroneEnvoy jusqu acquittementMise en file dattente jusqu ce que le message soit reu

    *

    Client1Client2file dattenteClient1thmeEnvoiemessageClient2PubliemessageConsommeAcquitteSouscritDlivreClient3SouscritDlivremessagemessagemessage

    *

    Cas dutilisation de JMSSystme faiblement couplSans connexionSupprime les dpendances entre le client et la plateforme serveur (langage de programmation, version) Publication souscriptionEnvoie, reoit des information avec un ou plusieurs clients non identifisIntgration avec dautres systmes de messageriesIBM MQ-SeriesMicrosoft Message Queue

    *

    API JMSimport javax.jms.* ;

    *

    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

    *

    Exemple de droulement de transactionbegin 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

    *

    API JTAimport javax.transaction ;import javax.transaction.xa ;

    *

    Programmation JTAimport 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()); } }[...]

    *

    JavaMailJavaMail 1.2 dfinit un ensemble dinterface de classe permettant de construire des applications sur les technologies de courrier lectroniqueGestion des standards de courrierSMTP : protocole de transport de courrier lectroniquePOP : rcupration du courrier sur serveur distantIMAP : gestion de botes aux lettres distantesMIME : standard de codage du contenu de courrier permettant notamment lattachement de documents de tout format et lutilisation de langues diffrentes

    *

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

    *

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

    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); 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; }}

    *

    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 faireModules dauthentification disponiblesJNDIUNIXWindows NTKerberosKeyStore

    *

    API JAASimport javax.security.auth ;import javax.security.auth.callback ;import javax.security.auth.login ;import javax.security.auth.spi ;grant , { permission perm_class_name "target_name", "action"; ... permission perm_class_name "target_name", "action"; }; := Principal Principal_class "principal_name" import javax.security.* ;

    Java.policy

    *

    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(Subjectsubject, CallbackHandlercallbackHandler, MapsharedState, Mapoptions) {// 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"; };

    *

    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"; };

    *

    Java API for XML Processing (JAXP)SAX : gestion de flux dvnements XMLDOM : structure de document XML en mmoire sous forme darbreXSLT : prsentation de documents XML daprs des feuilles de style XSL

    *

    XML SAX -DOM

    *

    API XMLimport 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 ;

    *

    Java pour XMLJAXP : Java API for XML Parsingassure interface avec analyseur de documents produisant des formats DOM ou SAXJAXB : Java Architecture for XML Bindingpermet de construire des documents XML partir dobjets Java et vice versaJAXM : Java API for XML Messengingpermet lchange de messages XML avec des plateformes distantes en synchrone ou asynchroneJAXR : Java API for XML Registriesinterface daccs aux annuaires de services applicatifsJAX-RPC : JAVA API for XML-based RPCappels des procdures distance avec XML

    *

    PlanArchitectures multi-tiers : architecture 1, 2, 3-tiersJ2EE : architecture gnraleComposants J2EE : Servlets, JSP, EJB, JMS, JAAS, JAXP, JavaMail, JNDI, etc.Outils de dveloppement et dintgrationProduits existants Conclusion

    Outils de dveloppement et dintgration

    *

    J2EE SDKJ2EE SDK est une dfinition oprationnelle de la plateforme J2EEFait par Sun Microsystem pour les dmonstrations, les prototypes et les applications non-commercialesContient :J2EE Application ServerServeur WebBase de donnes relationnellesAPI J2EEun kit de dveloppement et de dploiementBut : permettre aux dveloppeurs dexcuter leurs applications J2EE et vrifier leur compatibilit

    *

    Dploiement J2EEJAR Java ARchiveFichier classe JavaEJBWAR - Web ARchiveServletsJSPEAR - Enterprise ARchiveContient des JARs et WARs pour former une application complteDescripteurs de dploiementXML

    *

    PlanArchitectures multi-tiers : architecture 1, 2, 3-tiersJ2EE : architecture gnraleComposants J2EE : Servlets, JSP, EJB, JMS, JAAS, JAXP, JavaMail, JNDI, etc.Outils de dveloppement et dintgrationProduits existants Conclusion

    Produits existants

    *

    Serveurs J2EEApache 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.comCaucho Resin, http://www.caucho.com/ Allaire JRun, http://www.allaire.com/ Orion, http://www.orionserver.com/ SilverStream Application Server

    *

    PlanArchitectures multi-tiers : architecture 1, 2, 3-tiersJ2EE : architecture gnraleComposants J2EE : Servlets, JSP, EJB, JMS, JAAS, JAXP, JavaMail, JNDI, etc.Outils de dveloppement et dintgrationProduits existants Conclusion

    Conclusion

    *

    Exemple dapplication en entrepriseServletde fichesJDBCJSPSGBDsoumissiondune fichede renseignementinsertionde la fichegnration depage derreurMessage derreurInsertionVrificationdes donnesConstruction dela requte dinsertion

    *

    Exemple dapplication en entreprisefichier HTMLRequte HTTPServeur WebServletJSPEJBBean SessionBean EntitBean SessionBean EntitBase de donnesrelationnellesMainframeJDBCServeur dapplicationsServeurs de donnes

    *

    Exemple dapplication en entrepriserecuprer classes

    *

    Architecture scurise (JCA)Service de cryptographieInterface et classe de certificatClasse et interface de gestion de clef

    Documents ayant servis pour ces transparents :Documents de rfrences sur http://java.sun.com/*Livre XML de Georges GardarinDocuments de Ian ColeDocuments de Ming-Hung Cho 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.Le mcanisme de port est utilis afin de pouvoir permettre de grer plusieurs services simultans depuis une seule interface rseau.Une connexion est identifie par un couple de points appels socket permettant lidentification des deux extrmits de la connexion.

    Documents ayant servis pour ces transparents :Documents de rfrences sur http://java.sun.com/*Livre XML de Georges GardarinDocuments de Ian ColeDocuments de Ming-Hung Cho API : Application Programming InterfaceSPI : Service Provider Interface

    API : Application Programming InterfaceSPI : Service Provider Interface