Comment se débarasser de com.sun.messaging.jmq.io.Packet cannot be cast to com.sun.messaging.jms.ra.DirectPacket ?

Avec une installation par défaut de GlassFish, l'utilisation de JMS au sein du serveur d'application amène souvent à l'erreur suivante :
DirectConsumer:Caught Exception delivering messagecom.sun.messaging.jmq.io.Packet cannot be cast to com.sun.messaging.jms.ra.DirectPacket

Cette erreur n'est pas fatale, l'application est tout de même déployée et les différents messages sont envoyés et reçus. Cependant, cette erreur est générée à chaque envoi de message, ce qui peut rapidement devenir encombrant dans les fichiers de log de GlassFish.

Cette exception viens du mode de configuration utilisé pour le lancement du service JMS dans GlassFish. Par défaut, le service est lancé en mode EMBEDDED. Le service JMS tourne dans le même processus que le serveur GlassFish, ce qui provoque ce genre d'erreurs.

Il est possible de changer ce mode de lancement du service JMS. Il suffit de lancer ce même service en mode LOCAL pour que le service tourne dans un processus séparé du serveur GlassFish (mais toujours sur la même machine). Le service JMS sera toujours contrôlé par GlassFish (lancement simultanés entre autre). Changer ce mode de fonctionnement du service JMS permet de résoudre ce problème de cast de messages.

Pour effectuer ce changement, il faut se rendre dans la console d'administration de GlassFish :
  • Accéder à l'adresse http://localhost:4848/
  • Se connecter avec les identifiants d'administration de GlassFish (par défaut : admin /// adminadmin)
  • Cliquer sur "Configuration" -> "Java Message Service" dans le menu de navigation de gauche
  • Modifier la propriété "Type" et lui donner la valeur de "LOCAL"

Permalink  |  Commentaires (1)


Comments:

Tout d'abord, super Blog :).
Merci pour tous les tips et les aperiquiz.

Un nouveau lien dans mes marque-pages prioritaire.

Posted by Usman JAVED on juillet 10, 2009 at 01:30 AM CEST #

Post a Comment:
  • HTML Syntax: Allowed