Reset BytesMessage after payload extraction
Issue: SPR-13769
This commit is contained in:
parent
9589749fb2
commit
8346eeda27
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
package org.springframework.jms.listener.adapter;
|
||||
|
||||
import javax.jms.BytesMessage;
|
||||
import javax.jms.Destination;
|
||||
import javax.jms.InvalidDestinationException;
|
||||
import javax.jms.JMSException;
|
||||
|
|
@ -204,9 +205,9 @@ public abstract class AbstractAdaptableMessageListener
|
|||
/**
|
||||
* Extract the message body from the given JMS message.
|
||||
* @param message the JMS {@code Message}
|
||||
* @return the content of the message, to be passed into the
|
||||
* listener method as argument
|
||||
* @throws MessageConversionException if the message could not be unmarshaled
|
||||
* @return the content of the message, to be passed into the listener method
|
||||
* as an argument
|
||||
* @throws MessageConversionException if the message could not be extracted
|
||||
*/
|
||||
protected Object extractMessage(Message message) {
|
||||
try {
|
||||
|
|
@ -408,7 +409,19 @@ public abstract class AbstractAdaptableMessageListener
|
|||
|
||||
@Override
|
||||
protected Object extractPayload(Message message) throws JMSException {
|
||||
return extractMessage(message);
|
||||
Object payload = extractMessage(message);
|
||||
if (message instanceof BytesMessage) {
|
||||
try {
|
||||
// In case the BytesMessage is going to be received as a user argument:
|
||||
// reset it, otherwise it would appear empty to such processing code...
|
||||
((BytesMessage) message).reset();
|
||||
}
|
||||
catch (JMSException ex) {
|
||||
// Continue since the BytesMessage typically won't be used any further.
|
||||
logger.debug("Failed to reset BytesMessage after payload extraction", ex);
|
||||
}
|
||||
}
|
||||
return payload;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
Loading…
Reference in New Issue