From 9caf672f2160b88d3285cb78d131bec9ea6c1fbe Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 31 Oct 2012 08:53:29 +0100 Subject: [PATCH] Added proper synchronization and not-null check to SimpleMessageListenerContainer's doShutdown Issue: SPR-9930 --- .../SimpleMessageListenerContainer.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/org.springframework.jms/src/main/java/org/springframework/jms/listener/SimpleMessageListenerContainer.java b/org.springframework.jms/src/main/java/org/springframework/jms/listener/SimpleMessageListenerContainer.java index 82d953564b1..3bd88b84baa 100644 --- a/org.springframework.jms/src/main/java/org/springframework/jms/listener/SimpleMessageListenerContainer.java +++ b/org.springframework.jms/src/main/java/org/springframework/jms/listener/SimpleMessageListenerContainer.java @@ -351,13 +351,17 @@ public class SimpleMessageListenerContainer extends AbstractMessageListenerConta */ @Override protected void doShutdown() throws JMSException { - logger.debug("Closing JMS MessageConsumers"); - for (MessageConsumer consumer : this.consumers) { - JmsUtils.closeMessageConsumer(consumer); - } - logger.debug("Closing JMS Sessions"); - for (Session session : this.sessions) { - JmsUtils.closeSession(session); + synchronized (this.consumersMonitor) { + if (this.consumers != null) { + logger.debug("Closing JMS MessageConsumers"); + for (MessageConsumer consumer : this.consumers) { + JmsUtils.closeMessageConsumer(consumer); + } + logger.debug("Closing JMS Sessions"); + for (Session session : this.sessions) { + JmsUtils.closeSession(session); + } + } } }