diff --git a/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/AbstractJmsTemplateBasedAdapter.java b/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/AbstractJmsTemplateBasedAdapter.java index 259c0cec7b..bcb75a57d4 100644 --- a/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/AbstractJmsTemplateBasedAdapter.java +++ b/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/AbstractJmsTemplateBasedAdapter.java @@ -21,6 +21,7 @@ import javax.jms.Destination; import org.springframework.beans.factory.InitializingBean; import org.springframework.jms.core.JmsTemplate; +import org.springframework.jms.support.destination.DestinationResolver; import org.springframework.util.Assert; /** @@ -36,6 +37,8 @@ public abstract class AbstractJmsTemplateBasedAdapter implements InitializingBea private volatile String destinationName; + private volatile DestinationResolver destinationResolver; + private volatile JmsTemplate jmsTemplate; private volatile JmsHeaderMapper headerMapper; @@ -52,13 +55,11 @@ public abstract class AbstractJmsTemplateBasedAdapter implements InitializingBea public AbstractJmsTemplateBasedAdapter(ConnectionFactory connectionFactory, Destination destination) { this.connectionFactory = connectionFactory; this.destination = destination; - this.jmsTemplate = createDefaultJmsTemplate(); } public AbstractJmsTemplateBasedAdapter(ConnectionFactory connectionFactory, String destinationName) { this.connectionFactory = connectionFactory; this.destinationName = destinationName; - this.jmsTemplate = createDefaultJmsTemplate(); } /** @@ -81,6 +82,10 @@ public abstract class AbstractJmsTemplateBasedAdapter implements InitializingBea this.destinationName = destinationName; } + public void setDestinationResolver(DestinationResolver destinationResolver) { + this.destinationResolver = destinationResolver; + } + public void setJmsTemplate(JmsTemplate jmsTemplate) { this.jmsTemplate = jmsTemplate; } @@ -122,6 +127,9 @@ public abstract class AbstractJmsTemplateBasedAdapter implements InitializingBea else { jmsTemplate.setDefaultDestinationName(this.destinationName); } + if (this.destinationResolver != null) { + jmsTemplate.setDestinationResolver(this.destinationResolver); + } return jmsTemplate; } diff --git a/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/config/JmsInboundChannelAdapterParser.java b/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/config/JmsInboundChannelAdapterParser.java index 331f2854e5..b4938773f7 100644 --- a/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/config/JmsInboundChannelAdapterParser.java +++ b/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/config/JmsInboundChannelAdapterParser.java @@ -79,6 +79,7 @@ public class JmsInboundChannelAdapterParser extends AbstractPollingInboundChanne builder.addPropertyReference(JmsAdapterParserUtils.HEADER_MAPPER_PROPERTY, headerMapper); } IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "extract-payload"); + IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "destination-resolver"); return BeanDefinitionReaderUtils.registerWithGeneratedName(builder.getBeanDefinition(), parserContext.getRegistry()); }