Bonjour a tous,
je suis actuellement entrain d'apprendre a utilisé les EJB3 sur JBoss 6.
Je n'arrive pas a implémenté un bean message, j'ai cette erreur:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Exception in thread "main" javax.naming.NameNotFoundException: MessageBean not bound
Voici le code de mon 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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
package beanMessage;
 
import javax.annotation.Resource;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.ejb.MessageDrivenContext;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
 
@MessageDriven(
		activationConfig={
				@ActivationConfigProperty(
						propertyName="typeDeDestination",
						propertyValue="javax.jms.Queue"
				),
				@ActivationConfigProperty(
						propertyName="nomDeDestination",
						propertyValue="queue/MessageBean"
				)
			}
		)
public class MessageBean implements MessageListener {
 
	@Resource MessageDrivenContext mdc;
 
	public void onMessage(Message msg) {
		TextMessage tm;
		try {
			if (msg instanceof TextMessage){
				tm = (TextMessage) msg;
				String text = tm.getText(); System.out.println("Message Bean Reçu : " + text);
			}
			else {
				System.out.println ("Message de mauvais type : "+msg.getClass().getName());
			}
		}catch(JMSException e) {
			e.printStackTrace();
			mdc.setRollbackOnly ();
		}catch(Throwable te) {
			te.printStackTrace();
		}
	}
}
Et voici mon 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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
import java.util.Properties;
 
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
 
import decoupeAvecEtat.DecoupeAvecEtat;
import decoupeSSEtat.DecoupeSSEtat;
 
 
 
public class Client{
	public static void main(String[] args) throws Exception {
 
		Properties props = System.getProperties();
		props.put(Context.INITIAL_CONTEXT_FACTORY,
				"org.jnp.interfaces.NamingContextFactory");
		props.put(Context.URL_PKG_PREFIXES,
				"org.jboss.naming:org.jnp.interfaces");
		props.put(Context.PROVIDER_URL, "jnp://localhost:1099");
		Context ctx = new InitialContext(props);
 
		String s="test";
 
 
		// Initialisation
		QueueConnectionFactory factory = (QueueConnectionFactory) ctx.lookup("ConnectionFactory");
		QueueConnection connection = factory.createQueueConnection();
		QueueSession session = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
		Queue queue = (Queue) ctx.lookup("queue/MessageBean"); --> ici que cela plante
		QueueSender sender = session.createSender(queue);
 
		// variable de message
		TextMessage msg = session.createTextMessage();
 
		// On envoie les lettres de la string s une par une
		for(int i=0;i<s.length();i++){
			msg.setText(String.valueOf(s.charAt(i)));
			sender.send(msg);
		}
 
	}
}
Je ne comprend vraiment pas d'ou viens le problème...
Sous eclipse, je vois bien que JBoss est en run et mon bean message est "Synchronized"

Donc avez vous une idée pour résoudre mon problème ?
Je vous remercie d'avance


EDIT: j'ai résolu en modifiant un fichier de conf de JBOSS.
Rajoute de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
<queue name="MessageBean">
  <entry name="/queue/MessageBean" />
</queue>
Dans le fichier JBOSS_HOME/server/default/deploy/hornetq/hornetq-jms.xml

Mais connaissez vous une solution qui permet de ne pas modifier ce fichier comme ceci ?