2010-01-27 6 views
0

Je construis une petite API autour de l'API JMS pour un de mes projets. Essentiellement, nous construisons du code qui gérera la logique de connexion, et simplifierons la publication de messages en fournissant une méthode comme Client.send (message String). L'une des idées discutées en ce moment est que nous fournissons un moyen pour les utilisateurs d'attacher des intercepteurs à ce client. Nous allons appliquer les intercepteurs après avoir préparé le message JMS et avant de le publier.Contournement pour MessageNotReadableException en Java

Par exemple, si nous voulons horodater un message et écrit un intercepteur pour cela, alors c'est la façon dont nous appliquerions que

...some code ... 

Message message = session.createMessage() 

..do all the current processing on the message and set the body 

for(interceptor:listOfInterceptors){ 
    interceptor.apply(message) 
} 

Un des intrerceptors nous si WAS pour comprimer le corps du message. Mais lorsque nous essayons de lire le corps du message dans l'intercepteur, nous recevons une exception MessageNotReadableException. Dans le passé, je compressais normalement le contenu avant de le définir comme le corps du message - donc je n'ai jamais eu à m'inquiéter de cette exception.

Existe-t-il un moyen de contourner cette exception?

Répondre

0

Il semble que votre client JMS tente de lire un message en écriture seule. Votre intercepteur ne peut pas fonctionner de cette façon, veuillez préciser comment vous compressiez le message plus tôt.

+0

Ce que nous avons précédemment été de prendre le message, le convertir en octets, puis le compresser en utilisant des bibliothèques de compression java et définir les octets compressés comme un corps d'un BytesMessage. Maintenant, nous voulons essayer cet intercepteur où nous définissons le corps du message en tant que texte, et éventuellement activer l'intercepteur qui va compresser le corps du message pour nous. – Hari

Questions connexes