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

Java EE Discussion :

Utilisation simple [JMS]


Sujet :

Java EE

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 142
    Par défaut Utilisation simple
    voila, je voudrai envoyer un message JMS, le plus simplement possible...
    Pour cela j'utilise un serveur Weblogic 8.1 , la spécification 1.0.2 de JMS...
    en Point à Point (Queue) et en mode asynchrone.


    J'essaye depuis plusieurs jours mais sans succès.
    Je vais décrire ce que j'ai fait et si quelqu'un peut me dire ce qui ne va pas ou comment faire...
    Voila, donc pour l'instant j'ai un méthode sendMessage et une autre receiveMessage:

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    	private void sendMessage () {
    		try {
    			Hashtable props = new Hashtable();
    			props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
    			props.put("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
    			props.put(Context.PROVIDER_URL, "localhost:7001");
    			Context ctx = new InitialContext(props);
     
    			QueueConnectionFactory QueueconnectionFactory = (QueueConnectionFactory) ctx.lookup("weblogic.jms.ConnectionFactory");
    			Queue QueueMessage = (Queue) ctx.lookup("QueueMessage");
    			QueueConnection cnx = QueueconnectionFactory.createQueueConnection();
    			QueueSession session = cnx.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
    			QueueSender sender = session.createSender((Queue) QueueMessage);
    			TextMessage message = session.createTextMessage();
    			message.setText("JMS sent");
    			sender.send(message);
    			cnx.close();
    		} catch (NamingException e) {
    			e.printStackTrace();
    		} catch (JMSException e) {
    			e.printStackTrace();
    		}
    	}
     
    	private void receiveMessage (){
    		try {
    			Hashtable props = new Hashtable();
    			props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
    			props.put("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
    			props.put(Context.PROVIDER_URL, "localhost:7001");
    			Context ctx = new InitialContext(props);
     
    			QueueConnectionFactory connectionFactory = (QueueConnectionFactory) ctx.lookup("weblogic.jms.ConnectionFactory");
    			Queue QueueMessage = (Queue) ctx.lookup("QueueMessage");
    			QueueConnection con = connectionFactory.createQueueConnection();
    			QueueSession session = con.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
     
    			QueueReceiver receiver = session.createReceiver(QueueMessage);
    			receiver.setMessageListener(this);
    			con.start();
    			TextMessage message = (TextMessage) receiver.receive();
    			System.err.println("Received : "+ message.getText());
     
    		} catch (NamingException e) {
    			e.printStackTrace();
    		} catch (JMSException e) {
    			e.printStackTrace();
    		}
     
    	}
     
    	public void onMessage(Message m) {
    		TextMessage message = (TextMessage) m ; 
    		try {
    			String cad = message.getText();
    			System.err.println("message received : " + cad);
    		}
    		catch (JMSException e) {
    			e.printStackTrace();
    		}
     
    	}
    Je n'ai donc qu'a appeler ces methodes et le message sera envoyer et reçu...?

    Est ce suffisant ou dois-je créer un MessageDrivenBean ??

    J'en ai fait un (dans le doute) qui ressemble à :
    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
    public class EJBMessages implements MessageDrivenBean, MessageListener {
    	private MessageDrivenContext context;
    	private static final long serialVersionUID = 1L;
    	public EJBMessages() {
     
    	}
    	public void onMessage(Message m) {
    		TextMessage message = (TextMessage) m ; 
    		try {
    			String cad = message.getText();
    			System.err.println("message received : " + cad);
    		}
    		catch (JMSException e) {
    			e.printStackTrace();
    		}
    	}
    	public void ejbCreate(){
    	}
    	public void setMessageDrivenContext(MessageDrivenContext arg0) throws EJBException {
    		context = arg0 ;
    	}
    	public void ejbRemove(){
    	}
    }
    le tout, accompagné des fichiers xml correspondant : ejb-jar.xml ainsi que weblogic-ejb-jar.xml (qui a priori sont ok)

    J'ai aussi fait les manipulations sous weblogic pour créer le serveur JMS,destination...


    Quelqu'un peut-il m'apporter des eclaircissement ?
    Merci

    caba.

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2004
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 63
    Par défaut
    Tu n'as pas besoin d'un message driven bean pour tester ton code JMS, et pour ton code tu es sûr que la QueueMessage est crée puisque tu fais juste un lookup

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Queue QueueMessage = (Queue) ctx.lookup("QueueMessage");
    et est ce que tu pourrais mettre l'erreur qu'il t'affiche

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 142
    Par défaut
    heu... Finalement j'utilise un EJB session pour envoyer les message qui utilise un Message Bean Driven... J'ai créé la destination,serveur et fileStore avec weblogic ... Et ça marche nickel ! (enfin des pb au début mais c bon maintenant)

    désolé, pris par le temps, j'oubliai de prévenir

    si tu les veux je pourrai poster les codes ...


    au passage, a ce moment là j'avais une erreur sur le "context factory", je crois bien

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

Discussions similaires

  1. Utilisation simple d'un objet COM
    Par andrebernard dans le forum C++
    Réponses: 52
    Dernier message: 28/05/2008, 15h21
  2. Utilisation simple d'une mémoire partagée sous linux
    Par dreamteam dans le forum Linux
    Réponses: 1
    Dernier message: 09/02/2007, 17h39
  3. utilisation simple de xmlhttpRequest
    Par alain31tl dans le forum Général JavaScript
    Réponses: 29
    Dernier message: 10/01/2006, 22h19
  4. Utilisation simple d'@@IDENTITY avec asp
    Par Ajrarn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/10/2003, 10h37

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