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

Wildfly/JBoss Java Discussion :

JMS HornetQ et JBoss 6.1.0 Final


Sujet :

Wildfly/JBoss Java

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2011
    Messages : 63
    Points : 55
    Points
    55
    Par défaut JMS HornetQ et JBoss 6.1.0 Final
    Salut les amis,

    J'utilise dans mon application java l'API JMS pour envoyer et recevoir des mails, je faisais des test avec un simple producteur/consomateur sur un topic.

    Je suis pertinament sur que je n'ai pas d'erreur pourtant au lancement du consomatteur puis du producteur il m'a l'air que je n'accéde pas à la methode onMessage()

    J'ai besoin de votre avis pour m'aiguiller

    Voila le code du Producteur :

    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
     
    import java.io.FileInputStream;
    import java.util.Properties;
     
    import javax.jms.Connection;
    import javax.jms.ConnectionFactory;
    import javax.jms.TextMessage;
    import javax.jms.ObjectMessage;
    import javax.jms.MessageProducer;
    import javax.jms.Session;
    import javax.jms.Topic;
    import javax.naming.Context;
    import javax.naming.InitialContext;
     
    import com.mailer.metier.entities.Dossier;
    import com.mailer.metier.entities.Mail;
     
    public class MailProducteur {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) throws Exception{
    		// TODO Auto-generated method stub
     
    		Properties prop = new Properties();
     
    		prop.load(new FileInputStream("jndi.properties")); 
     
    		InitialContext ctx = new InitialContext(prop);
     
    		// 1: Recherche d'une factory connection
     
    		ConnectionFactory factory = (ConnectionFactory)ctx.lookup("ConnectionFactory");
     
    		// 2: Etablissemment d'une connection JMS
     
    		Connection conn = factory.createConnection();
     
    		// 3: Creation d'une session
     
    		Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
     
    		// 4: Recherche d'une destination
     
    		Topic topic = (Topic)ctx.lookup("topic/EnvoiMailMdb");
     
    		// 5: Creation d'un producteur de message
    		MessageProducer producteur = session.createProducer(topic);
    		 TextMessage msg = session.createTextMessage();
    		  msg.setText("Mail de confirmation pour le client.");
                      	producteur.send(msg);
     
    			producteur.close();
    			System.out.println("Message envoyé !");
     
    	}
     
    }

    Voila le code du Consomateur :

    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    import java.io.FileInputStream;
    import java.io.UnsupportedEncodingException;
    import java.util.Properties;
     
    import javax.annotation.PreDestroy;
    import javax.jms.Connection;
    import javax.jms.ConnectionFactory;
    import javax.jms.JMSException;
    import javax.jms.Message;
    import javax.jms.MessageConsumer;
    import javax.jms.MessageListener;
    import javax.jms.Session;
    import javax.jms.TextMessage;
    import javax.jms.Topic;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
     
    import org.jboss.logging.Logger;
     
    import com.mailer.metier.entities.Dossier;
    import com.mailer.metier.entities.Mail;
     
     
    public class MailConsomateur implements MessageListener{
     
    	private static final Logger log = Logger.getLogger(MailConsomateur.class);
    	/**
             * @param args
             */
    	public static void main(String[] args) throws Exception{
    		// TODO Auto-generated method stub
    		new MailConsomateur();
    	}
     
    public MailConsomateur() throws Exception {
     
    		Properties prop = new Properties();
    		prop.load(new FileInputStream("jndi.properties")); 
    		InitialContext ctx = new InitialContext(prop);
     
    		// 1: recherche d'une connection factory
     
    		ConnectionFactory factory = (ConnectionFactory)ctx.lookup("ConnectionFactory");
     
    		// 2: Creation d'une connection JMS
     
    		Connection conn = factory.createConnection();
     
    		// 3: Creation d'une session
     
    		Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
     
    		// 4: Recherche d'une destination
     
    		Topic topic = (Topic)ctx.lookup("topic/EnvoiMailMdb");
     
    		// 5: Creation d'un consomateur de message 
     
    		MessageConsumer consomateur = session.createConsumer(topic);
    		consomateur.setMessageListener(this);
    		System.out.println("Client JMS à l'écoute du message ");
     
    		conn.start();
     
    	}
     
    	@Override
    	public void onMessage(Message msg) {
    		// TODO Auto-generated method stub
     
    		if (msg instanceof TextMessage) {
     
    			TextMessage tm = (TextMessage)msg;
     
    			try {
     
    				String mail = tm.getText();
     
    				System.out.println("Le Client vient de reçevoir le mail suivant : "+mail);
     
    			}catch(JMSException e){
    				e.printStackTrace();
    			}
    		}
    	}
     
    @PreDestroy
    	public void remove() {
     
    		System.out.println("Suppression du client du Mailing");
    	}
     
    }
    La console m'affiche bien :

    Mais le message n'est pas affiché dans la console ce qui veut dire qu'elle ne le reçoit pas ou qu'elle n'execute pas la methode onMessage.

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 31
    Points : 63
    Points
    63
    Par défaut
    Est-ce que tu peux donner le contenu de jndi.properties ?

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2011
    Messages : 63
    Points : 55
    Points
    55
    Par défaut
    le voila

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
    java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
    java.naming.provider.url=localhost:1099

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2011
    Messages : 63
    Points : 55
    Points
    55
    Par défaut
    J'ai essayé de changer le consommateur avec un Message Driven Bean mais j'ai toujours le même souci il me semble avec le debug que la methode n'est pas executé pour le Consomatteur quelqu'un a til déjà rencontré ce probléme ??

    En plus je crois qu'il a un probléme de timeout mais je n'ai pas su le résoudre

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 31
    Points : 63
    Points
    63
    Par défaut
    Le code est correct sur la syntaxe mais le problème de ton consommateur c'est qu'il s'arrête dès que le code du constructeur est exécuté entièrement.

    C'est très moche mais juste pour te convaincre rajoute juste après et relance consommateur puis producteur et tu verras que le message est bien envoyé au topic et bien consommé ensuite.

    J'insiste lourdement tu devrais revoir l'organisation de ton code.

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2011
    Messages : 63
    Points : 55
    Points
    55
    Par défaut
    Thomas, je tu tiens à te remercier sans ton aide je n'aurai pas déceeler cette erreur.Je tiens aussi à savoir comment tu as su que le probléme se trouvait là ?? comment tu as déduit !


    Et puis tu as raison l'organisation du code n'est pas fameuse mais j'utilisais cet exemple juste pour essayer un consomateur avant de passer directement sur un MDB

    Merci thomas maintenant aprés rectification ça marche ! je dois revoir mon code

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 31
    Points : 63
    Points
    63
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Je tiens aussi à savoir comment tu as su que le probléme se trouvait là ?? comment tu as déduit !
    Expérience et expérimentation

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/03/2013, 22h48
  2. Problème Jboss et JMS
    Par psypsy dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 30/07/2007, 10h05
  3. JBoss et JMS
    Par soumou dans le forum Wildfly/JBoss
    Réponses: 4
    Dernier message: 22/02/2007, 22h23
  4. JBoss JMS : pas d'acquittement pour les messages !
    Par flios dans le forum Wildfly/JBoss
    Réponses: 3
    Dernier message: 09/02/2007, 15h24
  5. API Jms avec Jboss
    Par yanis97 dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 08/09/2006, 17h52

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