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 :

Envoyer un message sur un topic


Sujet :

Java EE

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 86
    Par défaut Envoyer un message sur un topic
    Bonjour.

    Je travaille avec jboss 5.0.1.GA et j'essaye de faire fonctionner jms.

    Pour le moment, le seul xml que j'ai modifié est destinations-service.xml pour y ajouter un topic

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
       <mbean code="org.jboss.jms.server.destination.TopicService"
          name="jboss.messaging.destination:service=Topic,name=myTopic"
          xmbean-dd="xmdesc/Topic-xmbean.xml">
          <depends optional-attribute- name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
          <depends>jboss.messaging:service=PostOffice</depends>
       </mbean>
    Ensuite j'utilise ce code comme 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
     
    Properties env = new Properties();
    env.setProperty(Context.INITIAL_CONTEXT_FACTORY,"org.jboss.naming.HttpNamingContextFactory");
    env.setProperty(Context.PROVIDER_URL,"http://127.0.0.1:8080/invoker/JNDIFactory");
    InitialContext ic = new InitialContext(env);
    ConnectionFactory cf = (ConnectionFactory)ic.lookup("ConnectionFactory");
    Topic topic = (Topic)ic.lookup("topic/myTopic");
    Connection c = cf.createConnection();
    Session session = c.createSession(true, Session.AUTO_ACKNOWLEDGE);
    MessageProducer producer = session.createProducer(topic);
    TextMessage tm = session.createTextMessage();
    tm.setText("Hello World");
    producer.send(tm);
    producer.send(session.createMessage());
    session.close();
    c.close();
    Et ça tourne, pas la moindre exception mais ... je ne suis pas sûr que ça marche.

    J'ai essayé avec un 'consommateur' et aucun message n'est lu.

    De plus si je visualise le contenu de la db hsql, il y a bien un table jbm_msg mais elle est vide !

    Qui peux m'aider ? Et pour éviter les malentendus il s'agit d'une toute nouvelle copie de jboss, donc tout par défaut (et donc DefaultDS -> hsqldb), seul le fichier destinations-service.xml est modifié.

    Merci.

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 86
    Par défaut
    Bonjour.

    Je progresse. En fait mon erreur était d'avoir créé un session transactionnel et de ne pas avoir de commit.

    Donc maintenant, j'ai faits pas mal d'essais et ça marche très bien.
    Y compris avec un ObjectMessage.

    Reste quand même des questions :

    - où sont stockés les messages (je ne trouve rien dans la bd hsql).

    - je viens de créer un publier un mdbean. Si j'envoie un TextMessage ça marche impec. Par contre si j'envoie un ObjectMessage ça plante.

    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
     
    package jms;
     
    import javax.ejb.ActivationConfigProperty;
    import javax.ejb.MessageDriven;
    import javax.jms.JMSException;
    import javax.jms.Message;
    import javax.jms.MessageListener;
    import javax.jms.ObjectMessage;
    import javax.jms.TextMessage;
     
    import messages.Student;
     
    import org.apache.log4j.Logger;
     
    @MessageDriven(name="ConsumerBean",
                   activationConfig = 
                     {
    		         @ActivationConfigProperty(propertyName="destinationType",propertyValue="javax.jms.Topic"),
    		         @ActivationConfigProperty(propertyName="destination",propertyValue="topic/myTopic")
                     }
                   )
    public class ConsumerBean implements MessageListener
    {
     
    	@Override
    	public void onMessage(Message message)
    	{
    		Logger logger = Logger.getLogger(ConsumerBean.class);
     
    		logger.info(message.toString());
    		if(message instanceof TextMessage)
    		{
    			String text = "";
    			try 
    			{
    				text = ((TextMessage)message).getText();
    			}
    			catch (JMSException e) 
    			{
    				e.printStackTrace();
    			}
    			logger.info("TextMessage : "+text);
    		}
    		else if(message instanceof ObjectMessage)
    		{
    			logger.info("ObjectMessage Detected");
    			Student st = null;
    			try 
    			{
    				st = (Student) ((ObjectMessage)message).getObject();
    				logger.info("Student Loaded");
    			}
    			catch (Exception e)
    			{
    				e.printStackTrace();
    			}
    			logger.info("Object Message : "+st.toString());
     
    		}
     
    	}
     
    }
    et

    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
     
    package messages;
    import java.io.Serializable;
     
     
    public class Student implements Serializable 
    {
    	private static final long serialVersionUID = 1L;
     
    	private String name;
    	private String school;
     
    	public String getName() 
    	{
    		return name;
    	}
    	public void setName(String name) 
    	{
    		this.name = name;
    	}
    	public String getSchool() 
    	{
    		return school;
    	}
    	public void setSchool(String school) 
    	{
    		this.school = school;
    	}
     
    	@Override
    	public String toString()
    	{
    		return "Student [name="+this.name+",school="+this.school+"]";
    	}
     
     
    }
    ===>

    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
     
    15:53:08,318 ERROR [STDERR] java.lang.RuntimeException: Student
    15:53:08,318 ERROR [STDERR] 	at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    15:53:08,318 ERROR [STDERR] 	at java.security.AccessController.doPrivileged(Native Method)
    15:53:08,318 ERROR [STDERR] 	at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    15:53:08,318 ERROR [STDERR] 	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    15:53:08,318 ERROR [STDERR] 	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    15:53:08,318 ERROR [STDERR] 	at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    15:53:08,318 ERROR [STDERR] 	at java.lang.Class.forName0(Native Method)
    15:53:08,318 ERROR [STDERR] 	at java.lang.Class.forName(Class.java:247)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:279)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:1102)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.classloader.spi.base.BaseClassLoader.loadClassFromDomain(BaseClassLoader.java:772)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:415)
    15:53:08,318 ERROR [STDERR] 	at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    15:53:08,318 ERROR [STDERR] 	at java.lang.Class.forName0(Native Method)
    15:53:08,318 ERROR [STDERR] 	at java.lang.Class.forName(Class.java:247)
    15:53:08,318 ERROR [STDERR] 	at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:603)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.messaging.util.ObjectInputStreamWithClassLoader.resolveClass(ObjectInputStreamWithClassLoader.java:78)
    15:53:08,318 ERROR [STDERR] 	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1574)
    15:53:08,318 ERROR [STDERR] 	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
    15:53:08,318 ERROR [STDERR] 	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731)
    15:53:08,318 ERROR [STDERR] 	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
    15:53:08,318 ERROR [STDERR] 	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.messaging.util.StreamUtils.readObject(StreamUtils.java:154)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.messaging.core.impl.message.MessageSupport.readPayload(MessageSupport.java:392)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.jms.message.JBossObjectMessage.getObject(JBossObjectMessage.java:126)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.jms.message.ObjectMessageProxy.getObject(ObjectMessageProxy.java:68)
    15:53:08,318 ERROR [STDERR] 	at jms.ConsumerBean.onMessage(ConsumerBean.java:50)
    15:53:08,318 ERROR [STDERR] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    15:53:08,318 ERROR [STDERR] 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    15:53:08,318 ERROR [STDERR] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    15:53:08,318 ERROR [STDERR] 	at java.lang.reflect.Method.invoke(Method.java:597)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeTarget(MethodInvocation.java:122)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:111)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.ejb3.EJBContainerInvocationWrapper.invokeNext(EJBContainerInvocationWrapper.java:69)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.invoke(InterceptorSequencer.java:73)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.aroundInvoke(InterceptorSequencer.java:59)
    15:53:08,318 ERROR [STDERR] 	at sun.reflect.GeneratedMethodAccessor338.invoke(Unknown Source)
    15:53:08,318 ERROR [STDERR] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    15:53:08,318 ERROR [STDERR] 	at java.lang.reflect.Method.invoke(Method.java:597)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aop.advice.PerJoinpointAdvice.invoke(PerJoinpointAdvice.java:174)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.fillMethod(InvocationContextInterceptor.java:72)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_fillMethod_19151089.invoke(InvocationContextInterceptor_z_fillMethod_19151089.java)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.setup(InvocationContextInterceptor.java:88)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_setup_19151089.invoke(InvocationContextInterceptor_z_setup_19151089.java)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.ejb3.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:62)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:56)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:68)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:126)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:194)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:80)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.ejb3.mdb.MessagingContainer.localInvoke(MessagingContainer.java:262)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.ejb3.mdb.inflow.MessageInflowLocalProxy.delivery(MessageInflowLocalProxy.java:270)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.ejb3.mdb.inflow.MessageInflowLocalProxy.invoke(MessageInflowLocalProxy.java:140)
    15:53:08,318 ERROR [STDERR] 	at $Proxy144.onMessage(Unknown Source)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.resource.adapter.jms.inflow.JmsServerSession.onMessage(JmsServerSession.java:178)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.jms.client.container.ClientConsumer.callOnMessageStatic(ClientConsumer.java:160)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.jms.client.container.SessionAspect.handleRun(SessionAspect.java:831)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aop.advice.org.jboss.jms.client.container.SessionAspect_z_handleRun_19151089.invoke(SessionAspect_z_handleRun_19151089.java)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.jms.client.container.ClosedInterceptor.invoke(ClosedInterceptor.java:170)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aop.advice.PerInstanceInterceptor.invoke(PerInstanceInterceptor.java:86)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.jms.client.delegate.ClientSessionDelegate.run(ClientSessionDelegate.java)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.jms.client.JBossSession.run(JBossSession.java:199)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.resource.adapter.jms.inflow.JmsServerSession.run(JmsServerSession.java:234)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:213)
    15:53:08,318 ERROR [STDERR] 	at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:260)
    15:53:08,318 ERROR [STDERR] 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    15:53:08,318 ERROR [STDERR] 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    15:53:08,318 ERROR [STDERR] 	at java.lang.Thread.run(Thread.java:662)
    Sans utiliser de ejb ça marche. Une idée ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/04/2009, 15h49
  2. Réponses: 2
    Dernier message: 03/02/2009, 23h49
  3. Réponses: 1
    Dernier message: 27/10/2008, 17h00
  4. Réponses: 6
    Dernier message: 13/07/2007, 11h50
  5. [PHP-JS] PHP Envoyer un message sur des news-groupe
    Par FoxLeRenard dans le forum Langage
    Réponses: 2
    Dernier message: 03/10/2006, 01h45

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