La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Stéphane Frenot - Département Télécommunication - SID - II - EJBcli 211 Le client EJB.

Présentations similaires


Présentation au sujet: "Stéphane Frenot - Département Télécommunication - SID - II - EJBcli 211 Le client EJB."— Transcription de la présentation:

1 Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr II - EJBcli 211 Le client EJB

2 Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr II - EJBcli 212 En gros.... OM Client jndi 1 2 3 4 5

3 Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr II - EJBcli 213 Comment obtenir le stub du « home » ? Réaliser un lookup sur le service de nommage JNDI afin d'obtenir..... Pour localiser le................... d'un EJB Robot lié en tant que « nono » : // Obtenir un contexte de travail initial try{ RobotHome home=(RobotHome)context.lookup(« nono »); }catch(NamingException e){...}

4 Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr II - EJBcli 214 Linterface..... Elle fournie un service de gestion du cycle de vie des EJB créés –création –suppression –métaDonnées –localisation des EJB d'implantation

5 Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr II - EJBcli 215 Linterface EJBHome Toutes les interfaces « home » héritent de –javax.ejb.EJBHome L'interface EJBHome : public interface EJBHome extends Remote { public void remove (Handle handle) throws RemoveException; public void remove (Object object) throws RemoveException; public EJBMetaData getEJBMetaData(); }

6 Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr II - EJBcli 216 Les méthodes de création L'interface home présente également un certain nombre de méthodes create qu'un client peut invoquer pour demander la fabrication d'un EJB Syntaxe des méthodes create create() throws CreateException, RemoteException Exemple de création de robots try{ RobotHome home=(RobotHome)context.lookup(« nono »); Robot jacques=home.create(); Robot bill=home.create(«Grosses Chenilles»); }catch(NamingException e){ }catch(CreationException e){ }catch(RemoteException e){}

7 Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr II - EJBcli 217 Les ejb entité présentent des méthodes find Les entités EJB possèdent une ou plusieurs méthodes find dans l'interface « home » qui permettent de localiser les EJB persistants existants Toutes les « homes » des EJB entity ont : findByPrimaryKey( ) throws FinderException, RemoteException L'interface « home » peut également définir d'autres méthodes de recherche : findNimporteQuoi() throws FinderException, RemoteException java.util.Enumeration findNimporteQuoi() throws FinderException, RemoteException

8 Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr II - EJBcli 218 Exemple d'utilisation d'un entity EJB On utilise des entity EJB qui représentent des adresses Mail : public interface EmailHome extends EJBHome { public Email create(String adresse)throws CreateException, RemoteException public Email findByPrimaryKey(EmailPK pk) throws FinderException, RemoteException public Enumeration findByDomain(String domain) throws FinderException, RemoteException } Exemple dutilisation de l'entité EJB try{ EmailHome home=(EmailHome)context.lookup(« EmailEJB »); EmailPK pk=new EmailPK("sfrenot@insa-lyon.fr"); Email uneAdresseMail=home.findByPrimaryKey(pk); Enumeration enum=home.findByDomain("univ-lyon1.fr"); while(enum.hasMoreElements()){ Email email=(Email)enum.nextElement(); // Utilisation de l'EJB ici ! } }catch(Exception e){}

9 Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr II - EJBcli 219 Que ce passe t'il au niveau du container ?

10 Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr II - EJBcli 220 Vision client du cycle de vie : EJB Session Non existant non référencé Non existant référencé existe non référencé existe, référencé home.create (...) Le client invoque les méthodes La référence client est libérée handle.getObject() Crash du container ou timeOut du bean object.remove() home.remove() Exception système du bean TimeOut du Bean Crash du container NoSuchObjectException() La référence client est libérée

11 Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr II - EJBcli 221 Vision client du cycle de vie : EJB Entity Non existant non référencé Non existant référencé existe non référencé existe, référencé home.create (...) Le client invoque les méthodes La référence client est libérée home.find() Insertion directe object.remove() home.remove() ou suppression directe NoSuchObjectException() La référence client est libérée Suppression directe home.remove()

12 Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr II - EJBcli 222 L'interface Remote L'interface Remote liste les opérations métiers d'un EJB –Toutes les interfaces Remote étendent EJBObject –Toutes les méthodes peuvent lever une exception RemoteException

13 Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr II - EJBcli 223 L'interface EJBObject L'interface EJBObject fournit au client sa vue d un EJB L'interface EJBObject interface EJBObject extends Remote { public EJBHome getEJBHome(); public Handle getHandle(); public Object getPrimaryKey(); public boolean isIdentical(EJBObject); public void remove() throws RemoveException; } Toutes ces méthodes lèvent aussi RemoteException

14 Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr II - EJBcli 224 L'interface Remote L'interface Remote définit surtout les opérations métiers de l'EJB L'interface Remote pour un EJB entité public interface Email extends EJBObject{ public String getDomainName() throws RemoteException; public String getEmailAddress() throws RemoteException; public String getUserName() throws RemoteException; } Exemple d'utilisation de l'EJB try{ EmailHome home=(EmailHome)context.lookup("EmailEJB"); Email ejb=home.create("stephf@lisiflory.insa-lyon.fr"); String domain=ejb.getDomainName(); String user=ejb.getUserName(); System.out.println(" Adresse Mel : "+user+"@"+domain); }catch(Exception e){...}

15 Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr II - EJBcli 225 Comparaison d'EJB Utilisation de isIdentical(EJBObject) pour voir si deux références distances indiquent le même EJB Comparaison d'identité RemoteStringHome home=...; //Obtient le home d'un stateful RemoteString r1=home.create(...); RemoteString r2=home.create(...); RemoteString r3=r2; //comparaisons if (r1.isIdentical(r2)){...} if (r1.isIdentical(r1)){...} if (r2.isIdentical(r3){...}

16 Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr II - EJBcli 226 Objets Handle Un Handle peut être utilisé pour stocker une connexion sur un EJB Un objet Handle : –Représente le contenu d'un remote stub –Est sérialisable –Est produit à partir de l'interface Remote Définition de l'interface Handle public interface Handle{ public EJBObject getEJBObject() throws RemoteException; } Pour fabriquer le Handle à partir de l'EJB public Handle getHandle() throws RemoteException;


Télécharger ppt "Stéphane Frenot - Département Télécommunication - SID - II - EJBcli 211 Le client EJB."

Présentations similaires


Annonces Google