diff --git a/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsSendingMessageHandler.java b/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsSendingMessageHandler.java index 256e5250ce..3f969ee89b 100644 --- a/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsSendingMessageHandler.java +++ b/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsSendingMessageHandler.java @@ -35,6 +35,18 @@ public class JmsSendingMessageHandler extends AbstractJmsTemplateBasedAdapter im private volatile int order = Ordered.LOWEST_PRECEDENCE; + public JmsSendingMessageHandler(JmsTemplate jmsTemplate) { + super(jmsTemplate); + } + + /** + * No-arg constructor provided for convenience when configuring with + * setters. Note that the initialization callback will validate. + */ + public JmsSendingMessageHandler() { + super(); + } + /** * Specify whether the payload should be extracted from each Spring * Integration Message to be converted to the body of a JMS Message. diff --git a/spring-integration-jms/src/main/java/org/springframework/integration/jms/config/JmsOutboundChannelAdapterParser.java b/spring-integration-jms/src/main/java/org/springframework/integration/jms/config/JmsOutboundChannelAdapterParser.java index 2ad29ffd3e..2d4da98a7f 100644 --- a/spring-integration-jms/src/main/java/org/springframework/integration/jms/config/JmsOutboundChannelAdapterParser.java +++ b/spring-integration-jms/src/main/java/org/springframework/integration/jms/config/JmsOutboundChannelAdapterParser.java @@ -49,7 +49,7 @@ public class JmsOutboundChannelAdapterParser extends AbstractOutboundChannelAdap throw new BeanCreationException("When providing a 'jms-template' reference, none of " + "'connection-factory', 'destination', or 'destination-name' should be provided."); } - builder.addPropertyReference(JmsAdapterParserUtils.JMS_TEMPLATE_PROPERTY, jmsTemplate); + builder.addConstructorArgReference(jmsTemplate); } else if (hasDestinationRef ^ hasDestinationName) { builder.addPropertyReference(JmsAdapterParserUtils.CONNECTION_FACTORY_PROPERTY, diff --git a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsOutboundChannelAdapterParserTests.java b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsOutboundChannelAdapterParserTests.java index b9b142d0e2..912c02f04e 100644 --- a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsOutboundChannelAdapterParserTests.java +++ b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsOutboundChannelAdapterParserTests.java @@ -29,6 +29,7 @@ import org.springframework.beans.factory.BeanDefinitionStoreException; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.integration.endpoint.EventDrivenConsumer; import org.springframework.integration.jms.JmsHeaderMapper; +import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.support.converter.MessageConverter; /** @@ -89,6 +90,17 @@ public class JmsOutboundChannelAdapterParserTests { assertEquals(TestJmsHeaderMapper.class, headerMapper.getClass()); } + @Test + public void adapterWithJmsTemplate() { + ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( + "jmsOutboundWithJmsTemplate.xml", this.getClass()); + EventDrivenConsumer endpoint = (EventDrivenConsumer) context.getBean("adapter"); + DirectFieldAccessor handlerAccessor = new DirectFieldAccessor(new DirectFieldAccessor(endpoint).getPropertyValue("handler")); + JmsTemplate jmsTemplate = (JmsTemplate) handlerAccessor.getPropertyValue("jmsTemplate"); + assertNotNull(jmsTemplate); + assertEquals(context.getBean("template"), jmsTemplate); + } + @Test public void adapterWithMessageConverter() { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( diff --git a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/jmsOutboundWithJmsTemplate.xml b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/jmsOutboundWithJmsTemplate.xml new file mode 100644 index 0000000000..8356fcbdac --- /dev/null +++ b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/jmsOutboundWithJmsTemplate.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + +