La première saison des OpenREX tire sur sa fin, et vous avez été nombreux à venir discuter avec nous de GWT 2.0, OSGI, Scrum ou encore ElasticPath tout au long de l’année. Mais comme chez Ippon on garde le meilleur pour la fin, nous vous invitons une dernière fois avant la trêve estivale, le jeudi 8 juillet, pour un OpenREX sur Git.

Les deux premières parties de ce post ont introduit le MBean que WebLogic expose pour les ressources JMS et montré comment l’utiliser pour monitorer ou manipuler les qeues JMS, cette troisième et dernière partie l’utilisera pour lire le contenu des messages JMS.

Vous allez me dire à quoi cela sert-il d’utiliser JMX pour lire le contenu d’un message ? Et vous aurez raison, la plupart du temps l’utilisation des apis JMS (en particulier QueueBrowser) est préférable puisque le code est alors portable quelque soit le provider jms.
L’utilisation d’une client JMS dédié (tel que HermesJMS) est encore plus simple.
Dans les deux cas, il faudra juste faire attention dans le cas de queues distribuées (Sous Weblogic 9 et 10, pour des queues uniformément distribuées, il faut préfixer le nom jndi de la queue distribuée par le nom du serveur jms pour atteindre une queue physique en particulier : par exemple : JMSServer-0@jms/MyFirstDistributedQueue)

Infinispan (http://www.jboss.org/infinispan/) se définit lui même comme “peer-to-peer, in-memory data grid platform” et existe depuis Avril 2009.
Infinispan est une évolution de JBoss Cache, ce n’est pas simplement un renommage de projet mais une vraie évolution vers les Grid.
Il est écrit en Java (comme Coherence) et est compatible avec Java SE 6 (ainsi que la plupart des JVM des éditeurs alternatifs).
Licence : Open source, LGPL.

 A lire : Le but de cet article est de présenter brièvement tous les moyens possibles de faire du Java sur iPhone, avec leurs avantages et inconvénients. J’aimerais le faire évoluer assez régulièrement, grâce à vos commentaire et remarques. Si vous avez de nouvelles informations, ou que vous connaissez des solutions non citées, merci de m’en avertir.

 

Vous êtes certainement au courant que Steve Jobs a d’ores et déjà annoncé que Java ne serait jamais nativement présent sur iPhone, iPod, & Cie, son principal argument étant – et je vous conseille de vous asseoir pour lire la suite – que "plus personne n’utilise Java". C’est décidé, après avoir écrit cet article, je me reconvertis dans l’Objective C ! Ce cher Steve a décidement beaucoup d’humour.

Ne tournons pas autour du pot pendant des heures. Oui ! Il est quand même possible de faire du java sur iPhone. Quoi ? Vous le saviez déjà ? Ah… Ok, mais connaissez-vous les solutions suivantes ?

La première partie de ce post a introduit les MBeans que WebLogic expose concernant les ressources JMS.
Nous avions commencé à les utiliser pour monitorer les queues JMS.
Dans cette deuxième partie, nous allons utiliser ces même Mbeans pour agir sur ces queues.
(Là aussi, ce sont des fonctionnalités proposées par la console WebLogic, pour des besoins ponctuels elle suffira amplement)

Supprimer des messages

Il est parfois nécessaire de supprimer des messages JMS d’une queue car ils ne sont pas/plus aptes à être consommés par l’application.

Une première approche serait tout simplement d’écrire un client qui consomme les messages en question avec les apis JMS. Cette approche fonctionnerait alors quelque soit le middleware JMS.

L’approche décrite ici effectue cette suppression via les apis JMX spécifiques de WebLogic.
Le premier avantage est que cela se révèle très simple (Groovy étant là pour simplifier l’usage de JMX)
Ensuite, on peut supposer que cette approche est plus performante (en particulier, il n’est pas nécessaire de récupérer le message pour le supprimer) et cela fonctionne même avec des messages Delayed : un message avec un Time-To-Deliver n’est pas visible immédiatement par un simple client JMS.

JMSDestinationRuntimeMBean propose donc l’opération deleteMessages pour supprimer les messages. Elle prend un unique argument qui doit être un selector JMS (On trouvera une description des selector jms dans l’api de l’interface Message : http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/jms/Message.html).