Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1591 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Jboss JMS

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Jboss JMS

n°1868660
b16d
Posté le 02-04-2009 à 12:04:03  profilanswer
 

Bonjour, je dois utiliser jms avec comme serveur JBOSS. quelqu'un aurait-il quelque exemples ou documentations ?

mood
Publicité
Posté le 02-04-2009 à 12:04:03  profilanswer
 

n°1868667
Riokmij
Blink and you're dead
Posté le 02-04-2009 à 12:36:53  profilanswer
 

Commence  par préciser la version de JBoss, parce que l'implémentation JMS a changé entre la version 4 et la 5.

n°1868675
b16d
Posté le 02-04-2009 à 13:33:29  profilanswer
 

merci de ta réponse,je travail avec la version de 5.0.0 de Jboss

n°1868686
Riokmij
Blink and you're dead
Posté le 02-04-2009 à 14:07:06  profilanswer
 

JBoss Messaging (l'implémentation JMS de JBoss 5) est encore relativement récent, et si tu cherches sur le web, tu risques surtout de trouver de la doc pour JBossMQ (JBoss 4), qui ne te sera donc d'aucune utilité.
 
La configuration se trouve dans deploy/messaging. Pour une utilisation basique, il suffit d'ajouter une destination (queue ou topic) dans destinations-service.xml, ce qui va créer la destination et la placer dans JNDI. Ensuite, pour l'utiliser, ben c'est du JMS tout ce qu'il y a de plus standard, il n'y a plus rien de spécifique à JBoss.
 
Liens utiles :


Avec ça, tu devrais déjà avoir de quoi bien débuter.

n°1868746
b16d
Posté le 02-04-2009 à 15:53:36  profilanswer
 

Merci de ta réponse fortement utile.J'ai suivi tes conseils et j'ai encore un souci, quand je lance mon programme j'ai l'erreur suivante :
 
Queue name is myqueue
JNDI API lookup failed: javax.naming.NameNotFoundException: QueueConnectionFactory not bound
 
J'ai modifier le fichier XML en rajoutant :
 
   <mbean code="org.jboss.jms.server.destination.QueueService"
      name="jboss.messaging.destination:service=QueueConnectionFactory,name=myqueue"
      xmbean-dd="xmdesc/Queue-xmbean.xml">
      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
      <depends>jboss.messaging:service=PostOffice</depends>
   </mbean>  
   
Aurais-tu une idée?

n°1868754
Riokmij
Blink and you're dead
Posté le 02-04-2009 à 15:59:34  profilanswer
 

Tu peux poster le code que tu utilises pour accèder à ta queue et la stack trace de ton erreur stp ?

n°1868760
b16d
Posté le 02-04-2009 à 16:05:26  profilanswer
 

Voila le code de ma class si c'est cela que tu veux :
 
 
public class SimpleQueueSender {
 /**
  * Main method.
  *
  * @param args the queue used by the example and,
  * optionally, the number of messages to send
  */
 public static void main(String[] args) {
  String queueName = null;
  Context jndiContext = null;
  QueueConnectionFactory queueConnectionFactory = null;
  QueueConnection queueConnection = null;
  QueueSession queueSession = null;
  Queue queue = null;
  QueueSender queueSender = null;
  TextMessage message = null;
  final int NUM_MSGS;
 
  if ( (args.length < 1) || (args.length > 2) ) {
   System.out.println("Usage: java SimpleQueueSender " +
   "<queue-name> [<number-of-messages>]" );
   System.exit(1);
  }
  queueName = new String(args[0]);
  System.out.println("Queue name is " + queueName);
  if (args.length == 2){
   NUM_MSGS = (new Integer(args[1])).intValue();
  } else {
   NUM_MSGS = 1;
  }
  /*
   * Create a JNDI API InitialContext object if none exists
   * yet.
   */
  try  
  {
   jndiContext = new InitialContext();
  } catch (NamingException e)  
  {
   System.out.println("Could not create JNDI API " +"context: " + e.toString());
   System.exit(1);
  }
  /*
   * Look up connection factory and queue. If either does
   * not exist, exit.
   */
  try  
  {
   queueConnectionFactory  = (QueueConnectionFactory)jndiContext.lookup("QueueConnectionFactory" );
   queue      = (Queue) jndiContext.lookup(queueName);
   
  } catch (NamingException e)  
  {
   System.out.println("JNDI API lookup failed: " +e.toString());
   System.exit(1);
  }
  /*
   * Create connection.
   * Create session from connection; false means session is
   * not transacted.
   * Create sender and text message.
   * Send messages, varying text slightly.
   * Send end-of-messages message.
   * Finally, close connection.
   */
  System.out.println("Test 1" );
  try {
   queueConnection = queueConnectionFactory.createQueueConnection();
   queueSession  = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
   
   queueSender = queueSession.createSender(queue);
   message  = queueSession.createTextMessage();
   
   for (int i = 0; i < NUM_MSGS; i++)  
   {
    message.setText("This is message " + (i + 1));
    System.out.println("Sending message: " + message.getText());
    queueSender.send(message);
   }
   /*
    * Send a non-text control message indicating end of
    * messages.
    */
   queueSender.send(queueSession.createMessage());
  } catch (JMSException e) {
   System.out.println("Exception occurred: " +
     e.toString());
  } finally {
   if (queueConnection != null) {
    try {
     queueConnection.close();
    } catch (JMSException e) {}
 
     
   }
  }
 }
}

n°1868784
Riokmij
Blink and you're dead
Posté le 02-04-2009 à 16:31:26  profilanswer
 

Code :
  1. queueConnectionFactory  = (QueueConnectionFactory)jndiContext.lookup("QueueConnectionFactory" );


 
Je pense que le problème vient de là, par défaut, la QueueConnectionFactory de JBoss se trouve sous le nom "ConnectionFactory".

n°1868809
b16d
Posté le 02-04-2009 à 16:57:30  profilanswer
 

l'erreur que tu m'as indiquée est bonne mais maintenant j'en ai une nouvelle :  
 
Queue name is myqueue
Exception in thread "main" java.lang.NoClassDefFoundError: org/jboss/remoting/CannotConnectException
 at java.lang.Class.getDeclaredFields0(Native Method)
 at java.lang.Class.privateGetDeclaredFields(Unknown Source)
 at java.lang.Class.getDeclaredField(Unknown Source)
 at java.io.ObjectStreamClass.getDeclaredSUID(Unknown Source)
 at java.io.ObjectStreamClass.access$700(Unknown Source)
 at java.io.ObjectStreamClass$2.run(Unknown Source)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.io.ObjectStreamClass.<init>(Unknown Source)
 at java.io.ObjectStreamClass.lookup(Unknown Source)
 at java.io.ObjectStreamClass.initNonProxy(Unknown Source)
 at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
 at java.io.ObjectInputStream.readClassDesc(Unknown Source)
 at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
 at java.io.ObjectInputStream.readClassDesc(Unknown Source)
 at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
 at java.io.ObjectInputStream.readObject0(Unknown Source)
 at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
 at java.io.ObjectInputStream.readSerialData(Unknown Source)
 at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
 at java.io.ObjectInputStream.readObject0(Unknown Source)
 at java.io.ObjectInputStream.readObject(Unknown Source)
 at java.rmi.MarshalledObject.get(Unknown Source)
 at org.jnp.interfaces.MarshalledValuePair.get(MarshalledValuePair.java:30)
 at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:514)
 at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:471)
 at javax.naming.InitialContext.lookup(Unknown Source)
 at incka.jms.client.SimpleQueueSender.main(SimpleQueueSender.java:71)
Caused by: java.lang.ClassNotFoundException: org.jboss.remoting.CannotConnectException
 at java.net.URLClassLoader$1.run(Unknown Source)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(Unknown Source)
 at java.lang.ClassLoader.loadClass(Unknown Source)
 at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
 at java.lang.ClassLoader.loadClass(Unknown Source)
 at java.lang.ClassLoader.loadClassInternal(Unknown Source)
 ... 27 more
 
correspondant à la ligne :    queueConnectionFactory  = (QueueConnectionFactory)jndiContext.lookup("ConnectionFactory" );
 
si tu as un exmple qui fonctionne je suis prenneur.

n°1868824
Riokmij
Blink and you're dead
Posté le 02-04-2009 à 17:09:43  profilanswer
 

Ça doit être un problème de classpath.  
 
Ton programme, il tourne en dehors de JBoss ? Si oui, je pense qu'il doit juste te manquer un jar dans le classpatch.
 
Sinon, non, je n'ai pas d'exemple tout fait à te donner.

mood
Publicité
Posté le 02-04-2009 à 17:09:43  profilanswer
 

n°1868849
b16d
Posté le 02-04-2009 à 17:24:33  profilanswer
 

Je le fais tourner au travers d'eclipse pour l'instant, je suis d'accord avec toi sur le faite qu'il manque jar : java.lang.NoClassDefFoundError: org/jboss/remoting/CannotConnectException  
LE soucit étant que le jar manquant est relatif à une exception qui est levée.
 
En tous cas merci de ton aide.

n°1868865
b16d
Posté le 02-04-2009 à 17:29:05  profilanswer
 

Apres rajout du jar manquant : l'erreur exacte est la suivante :
 
Exception in thread "main" org.jboss.jms.exception.MessagingNetworkFailureException
 at org.jboss.jms.client.delegate.DelegateSupport.handleThrowable(DelegateSupport.java:245)
 at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.org$jboss$jms$client$delegate$ClientConnectionFactoryDelegate$createConnectionDelegate$aop(ClientConnectionFactoryDelegate.java:187)
 at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_N3019492359065420858.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_N3019492359065420858.java)
 at org.jboss.jms.client.container.StateCreationAspect.handleCreateConnectionDelegate(StateCreationAspect.java:83)
 at org.jboss.aop.advice.org.jboss.jms.client.container.StateCreationAspect_z_handleCreateConnectionDelegate_18581223.invoke(StateCreationAspect_z_handleCreateConnectionDelegate_18581223.java)
 at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_N3019492359065420858.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_N3019492359065420858.java)
 at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.createConnectionDelegate(ClientConnectionFactoryDelegate.java)
 at org.jboss.jms.client.JBossConnectionFactory.createConnectionInternal(JBossConnectionFactory.java:205)
 at org.jboss.jms.client.JBossConnectionFactory.createQueueConnection(JBossConnectionFactory.java:101)
 at org.jboss.jms.client.JBossConnectionFactory.createQueueConnection(JBossConnectionFactory.java:95)
 at org.jboss.book.jms.ex1.SendRecvClient.setupPTP(SendRecvClient.java:58)
 at org.jboss.book.jms.ex1.SendRecvClient.sendRecvAsync(SendRecvClient.java:71)
 at org.jboss.book.jms.ex1.SendRecvClient.main(SendRecvClient.java:102)
Caused by: org.jboss.remoting.ConnectionFailedException: Timed out trying to create control socket
 at org.jboss.remoting.transport.bisocket.BisocketClientInvoker.handleConnect(BisocketClientInvoker.java:273)
 at org.jboss.remoting.MicroRemoteClientInvoker.connect(MicroRemoteClientInvoker.java:294)
 at org.jboss.remoting.Client.connect(Client.java:1596)
 at org.jboss.remoting.Client.connect(Client.java:498)
 at org.jboss.remoting.callback.ServerInvokerCallbackHandler.connect(ServerInvokerCallbackHandler.java:166)
 at org.jboss.remoting.ServerInvoker.getCallbackHandler(ServerInvoker.java:2047)
 at org.jboss.remoting.ServerInvoker.handleInternalInvocation(ServerInvoker.java:1663)
 at org.jboss.remoting.transport.bisocket.BisocketServerInvoker.handleInternalInvocation(BisocketServerInvoker.java:863)
 at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:895)
 at org.jboss.remoting.transport.socket.ServerThread.completeInvocation(ServerThread.java:742)
 at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:695)
 at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:549)
 at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:230)
 at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:163)
 at org.jboss.remoting.Client.invoke(Client.java:1544)
 at org.jboss.remoting.Client.addCallbackListener(Client.java:1613)
 at org.jboss.remoting.Client.addListener(Client.java:907)
 at org.jboss.jms.client.remoting.JMSRemotingConnection.addInvokerCallbackHandler(JMSRemotingConnection.java:230)
 at org.jboss.jms.client.remoting.JMSRemotingConnection.start(JMSRemotingConnection.java:340)
 at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.org$jboss$jms$client$delegate$ClientConnectionFactoryDelegate$createConnectionDelegate$aop(ClientConnectionFactoryDelegate.java:154)
 ... 11 more

n°1868901
b16d
Posté le 02-04-2009 à 17:52:39  profilanswer
 

J'ai une petite question,quand on fait :
 queue      = (Queue) jndiContext.lookup(queueName);  
 
queueName doit être déclarer ou dans les fichiers XML ?

n°1868909
Riokmij
Blink and you're dead
Posté le 02-04-2009 à 17:57:46  profilanswer
 

b16d a écrit :

J'ai une petite question,quand on fait :
 queue      = (Queue) jndiContext.lookup(queueName);  
 
queueName doit être déclarer ou dans les fichiers XML ?


 
Ici : <mbean code="org.jboss.jms.server.destination.QueueService"
      name="jboss.messaging.destination:service=QueueConnectionFactory,name=myqueue"
 
L'objet sera mis dans un sous-contexte "queue", donc tu y accèderas par le nom "queue/myqueue"

n°1869142
b16d
Posté le 03-04-2009 à 11:16:51  profilanswer
 

vraimment merci je comprend beaucoup mieux le principe. je plante par contre un peu plus loin :
 
   queueConnection = queueConnectionFactory.createQueueConnection();
 
Mon client qui reçoit le message doit il être lancé à ce moment là ?

n°1869147
Riokmij
Blink and you're dead
Posté le 03-04-2009 à 11:31:04  profilanswer
 

JMS est un protocole asynchrone, les messages n'ont pas besoin d'être lus au moment où ils sont envoyés. S'il n'y a personne pour lire les messages, ils resteront stockés dans la queue jusqu'à ce que quelqu'un vienne les chercher. Ça fonctionne un peu sur le même principe que l'email, le service JMS de JBoss servant de boite aux lettres.
 
Donc pour répondre à ta question : ton application client, tu la lances quand tu veux :)

n°1869148
b16d
Posté le 03-04-2009 à 11:35:27  profilanswer
 

Ok c'est bien ce que j'avais compris,  aurais-tu une idée pourquoi lors de la création de ma queue :
   queueConnection = queueConnectionFactory.createQueueConnection();  
 
L'exception suivante est levée:
Exception occurred: org.jboss.jms.exception.MessagingNetworkFailureException
 
Sur le server j'ai le message suivant qui apparait :
11:22:49,234 ERROR [BisocketServerInvoker] received new control socket for unrecognized listenerId: 4p7222-aufgj0-ft2o3rwl-1-ft2o3shu-9
 

n°1869149
Riokmij
Blink and you're dead
Posté le 03-04-2009 à 11:38:14  profilanswer
 

J'ai jamais utilisé JMS en dehors de JBoss, mais d'après le message d'erreur, je pense qu'il s'attend à une forme d'authentification pour les connexions qui viennent de l'extérieur. Mais là, on sort complètement de mon domaine de compétence...

n°1869156
b16d
Posté le 03-04-2009 à 11:44:34  profilanswer
 

En prennant l'example fournit avec Jboss Messaging j'ai aussi une exception .... Exception in thread "main" org.jboss.jms.exception.MessagingNetworkFailureException

n°1869171
b16d
Posté le 03-04-2009 à 12:38:49  profilanswer
 

j'aurais un petite question a te poser? comment installes-tu jboss messaging j'ai l'impression que l'installation ce passe passe mal.

n°1870174
b16d
Posté le 06-04-2009 à 16:18:07  profilanswer
 

Problème résolut, encore merci de ton aide Riokmij. Il restait comme problème une mauvaise version de jboss-remoting.jar

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Jboss JMS

 

Sujets relatifs
[JBoss]Stockage de fichiers ext à l'extérieur d'une application webJBoss et les fuseaux horaire
Acces reseau non accessible quand JBOSS demarre sur un serveurEclipse JBOSS 10060 Connection timed out
configurer le timed out Eclipse JBOSS v4.2[JBoss] ClassNotFoundException lors du déploiement d'un WAR
Problème de publication d'Eclipse vers JBoss[RESOLU] EBJ3 + Webservice + Jboss
configurer Jboss pour JMS[JAVA][JMS][JBOSS] The connection has already a clientID
Plus de sujets relatifs à : Jboss JMS


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR