This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
wiki:epims4_0m2:developer:jms [2008/04/03 16:13] dupierris created |
wiki:epims4_0m2:developer:jms [2008/10/02 10:21] (current) |
||
---|---|---|---|
Line 7: | Line 7: | ||
Le provider JMS inclus dans Geronimo est ActiveMQ. On définit les //ressources JMS // dans la console de Geronimo. Ces ressources sont ensuite référencées, notamment via JNDI, dans les applications (J2EE déployées sur Geronimo ou même standalone externe). | Le provider JMS inclus dans Geronimo est ActiveMQ. On définit les //ressources JMS // dans la console de Geronimo. Ces ressources sont ensuite référencées, notamment via JNDI, dans les applications (J2EE déployées sur Geronimo ou même standalone externe). | ||
- | Voici le lien entre les différentes ressources / références | + | === Configuration et liens entre ressources/références === |
__Ressources Geronimo__ | __Ressources Geronimo__ | ||
Line 44: | Line 45: | ||
* accès à l'objet Queue via le nom physique : ''PhysNameQueue'' par exemple (1c) | * accès à l'objet Queue via le nom physique : ''PhysNameQueue'' par exemple (1c) | ||
- | + | {{ .:jmslinks.png }} | |
+ | |||
+ | === Tests réalisés === | ||
+ | |||
+ | * Il est nécessaire que la référence du message dans web.xml (3) soit celle utilisée dans le code | ||
+ | * Si on utilise un physicalName <> nom de l'objet Queue dans Geronimo, c'est le physicalname qui doit être utilisé dans les applications standalone mais c'est le nom qui doit être spécifié dans l'application web | ||
+ | * Un physical name doit obligatoirement être spécifié ! | ||
+ | |||
+ | Le workspace Eclipse utilisé pour les tests est sauvegardé (pour le laboratoire EDyP) dans Informatique/Gestion de Projets/ePims/Developpement | ||
+ | |||
+ | |||
+ | === Problème avec JmsTemplate === | ||
+ | |||
+ | L'utilisation de la classe JmsTemplate de Spring semble poser des problèmes lors de l'envoi/réception de messages dans des TOPIC. Tout est OK pour les QUEUE. | ||
+ | |||
+ | **Configuration :** | ||
+ | * application standalone définissant deux beans Spring | ||
+ | - TopicListener implémentant MessageListener et initialisé pour écouter le Topic d'intérêt | ||
+ | - TopicReceiver ayant comme propriété JmsTemplate et une méthode qui exécute JmsTemplate .receive(le Topic d'intérêt) | ||
+ | * librairie embarquée dans Geronimo définissant les beans | ||
+ | - SampleService qui envoie un message au Topic d'intérêt via JmsTemplate | ||
+ | - SampleServiceWOTemplate qui envoie un message au Topic d'intérêt via un MessageProducer | ||
+ | * application web définissant les servelts : | ||
+ | - SendTopic : utilisation du bean SampleServiceWOTemplate de la librairie pour l'envoie de message | ||
+ | - SendTopic2 : utilisation du bean SampleService de la librairie pour l'envoie de message | ||
+ | |||
+ | **Comportement :** | ||
+ | * Lors de l'envoie de message via SendTopic2 seul le TopicReceiver reçoit le message | ||
+ | * Lors de l'envoie de message via SendTopic seul le TopicListener reçoit le message et éventuellement des outils extérieur tel que Hermes.... | ||
+ | |||
+ | En d'autre termes les "listeners" utilisant JmsTemplate ne reçoivent des messages que des "senders" utilisant Jms Template et inversement; les messages émis par des "senders" utilisant JmsTemplate ne sont reçu que par des "listeners" utilisant JmsTemplate. | ||
+ | |||
+ | **Solution :** | ||
+ | Dans un premier temps (?), nous n'allons pas utiliser le JmsTemplate de Spring afin d'éviter ces problèmes.... Des tests devront/pourront être faits pour tenter d'élucider ce problème ! | ||
+ | Les articles suivants sont à conserver sous le coude : | ||
+ | http://activemq.apache.org/spring-support.html | ||
+ | http://activemq.apache.org/jmstemplate-gotchas.html | ||
+ | |||
+ | |||
+ |