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
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.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; }
SentenceBean.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; }
Voici les différents fichiers du Stateless bean:
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) {} }
CountCharactersHome.java
CountCharacters.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; }
CountCharactersBean.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; }
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 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) {} }
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.
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(); } } }
Merci d'avance.
mumu27!
Partager