IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Stateful Bean appelle une méthode d'un Stateless Bean


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de mumu27
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 213
    Par défaut Stateful Bean appelle une méthode d'un Stateless Bean
    Bonjour,

    je souhaiterais qu'une méthode de mon Stateless Bean soit appelée par le Stateful Bean.

    Voici les différents fichiers du Stateful bean:

    SentenceHome.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    package beans;
     
    import java.rmi.RemoteException;
    import javax.ejb.EJBHome;
    import javax.ejb.CreateException;
     
    public interface SentenceHome extends EJBHome {
      // Méthode permettant de créer un bean Sentence
      public Sentence create()
        throws CreateException, RemoteException;
    }
    Sentence.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    package beans;
     
    import java.rmi.RemoteException;
    import javax.ejb.EJBObject;
     
    public interface Sentence extends EJBObject {
      // Méthodes publiques du bean Sentence
      public void createSentence(String clientString)
        throws RemoteException;
      public String getSentence() throws RemoteException;
    }
    SentenceBean.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    package beans;
     
    import javax.ejb.SessionBean;
    import javax.ejb.SessionContext;
     
    public class SentenceBean implements SessionBean {
      // Phrase complète
      private String _Sentence = "";
     
      // Méthodes publiques du bean Sentence. Ces méthodes
      // doivent également être déclarées dans l'interface.
     
      // Concaténation de la phrase
      public void createSentence(String clientString) {
        // On ajoute le mot
        _Sentence = _Sentence + " " + clientString;
      }
     
      // Retourner la phrase
      public String getSentence() {
    	return _Sentence;
      }
     
      //Méthodes EJB standards
      public void ejbActivate() {}
      public void ejbPassivate() {}
      public void ejbRemove() {}
      public void ejbCreate() {}
      public void setSessionContext(SessionContext context) {}
    }
    Voici les différents fichiers du Stateless bean:

    CountCharactersHome.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    package beans;
     
    import java.rmi.RemoteException;
    import javax.ejb.EJBHome;
    import javax.ejb.CreateException;
     
    public interface CountCharactersHome extends EJBHome {
      // Méthode permettant de créer un bean CountCharacter
      public CountCharacters create()
        throws CreateException, RemoteException;
    }
    CountCharacters.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    package beans;
     
    import java.rmi.RemoteException;
    import javax.ejb.EJBObject;
     
    public interface CountCharacters extends EJBObject {
      // L'unique méthode publique du bean CountCharacters
      public int countChar(String clientString)
        throws RemoteException;
    }
    CountCharactersBean.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    package beans;
     
    import javax.ejb.SessionBean;
    import javax.ejb.SessionContext;
     
    public class CountCharactersBean implements SessionBean {
      // Implémentation des méthodes publiques. Ces méthodes
      // doivent également être présentes dans l'interface bean.
      public int countChar(String clientString) {
    	int length = clientString.length();
    	return length;
      }
     
      // Méthodes EJB standards
      public void ejbActivate() {}
      public void ejbPassivate() {}
      public void ejbRemove() {}
      public void ejbCreate() {}
      public void setSessionContext(SessionContext context) {}
    }
    Le code du client:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    package client;
     
    import beans.Sentence;
    import beans.SentenceHome;
    import javax.naming.InitialContext;
    import javax.rmi.PortableRemoteObject;
     
    public class SentenceClient {
     
      public static void main(String[] args) {
    	try {
    	  // Obtention d'un contexte
    	  InitialContext jndiContext = new InitialContext();
     
    	  // Obtention d'une référence à l'entrée JNDI Sentence
    	  Object ref = jndiContext.lookup("ejb/beans.Sentence");
     
    	  // Obtention d'une référence à l'interface home du bean
    	  SentenceHome home = (SentenceHome) PortableRemoteObject.narrow(ref, SentenceHome.class);
     
    	  // Création d'un objet Sentence à partir de l'interface home
    	  Sentence sentence = home.create();
     
    	  //Traitement de la phrase
    	  for (int i = 0; i < args.length; i++) {
    		sentence.createSentence(args[i]);
    	    String returnedSentence = sentence.getSentence();
    	    System.out.println("Phrase apres le mot numero " + (i + 1) + ": " + returnedSentence);
      	  }
        } catch(Exception e) {
    	  e.printStackTrace();
    	}
     
      }
    }
    Je voudrais savoir comment dans le code client je peux appeler une méthode de mon bean Stateless, ici CountCharacters, à partir du Bean Sentence (Bean Stateful). J'avoue que je ne vois pas bien ce qu'il faut faire, si quelqu'un a une idée je suis preneur.

    Merci d'avance.

    mumu27!

  2. #2
    Membre éclairé Avatar de mumu27
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 213
    Par défaut
    Finalement, j'ai crée une méthode dans mon bean avec état qui appelle la méthode du bean sans état avec l'objet bean sans état comme argument.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    package beans;
     
    import javax.ejb.SessionBean;
    import javax.ejb.SessionContext;
    import java.rmi.RemoteException;
     
    public class SentenceBean implements SessionBean {
      // Phrase complète
      private String _Sentence = "";
     
      // Méthodes publiques du bean Sentence. Ces méthodes
      // doivent également être déclarées dans l'interface.
     
      // Concaténation de la phrase
      public void createSentence(String clientString) {
        // On ajoute le mot
        _Sentence = _Sentence + " " + clientString;
      }
     
      // Retourner la phrase
      public String getSentence() {
    	return _Sentence;
      }
      //Compte le nombre de caractères à partir de la méthode du bean sans état
      public int getCountChar(CountCharacters countcharacters, String clientString) throws RemoteException
      {
    	int length = countcharacters.countChar(clientString);
    	return length;
      }
     
      //Méthodes EJB standards
      public void ejbActivate() {}
      public void ejbPassivate() {}
      public void ejbRemove() {}
      public void ejbCreate() {}
      public void setSessionContext(SessionContext context) {}
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 16
    Dernier message: 22/07/2011, 14h12
  2. Réponses: 3
    Dernier message: 12/04/2011, 17h01
  3. Réponses: 7
    Dernier message: 26/08/2009, 13h44
  4. [EJB] Stateless Bean appele une Stateful Bean
    Par Soulama dans le forum Java EE
    Réponses: 2
    Dernier message: 17/09/2008, 14h48
  5. Comment l'appel à une méthode virtuelle....
    Par Blobette dans le forum C++
    Réponses: 7
    Dernier message: 07/12/2004, 13h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo