Straight JmsMessagingTemplate setup based on JMS ConnectionFactory

Issue: SPR-12413
This commit is contained in:
Juergen Hoeller
2014-11-06 14:29:29 +01:00
parent 794566abf5
commit e02c23eea4

View File

@@ -17,6 +17,7 @@
package org.springframework.jms.core;
import java.util.Map;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Session;
@@ -39,6 +40,7 @@ import org.springframework.util.Assert;
* An implementation of {@link JmsMessageOperations}.
*
* @author Stephane Nicoll
* @author Juergen Hoeller
* @since 4.1
*/
public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
@@ -53,13 +55,22 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
/**
* Constructor for use with bean properties.
* Requires {@link #setJmsTemplate} to be called.
* Requires {@link #setConnectionFactory} or {@link #setJmsTemplate} to be called.
*/
public JmsMessagingTemplate() {
}
/**
* Create an instance with the {@link JmsTemplate} to use.
* Create a {@code JmsMessagingTemplate} instance with the JMS {@link ConnectionFactory}
* to use, implicitly building a {@link JmsTemplate} based on it.
* @since 4.1.2
*/
public JmsMessagingTemplate(ConnectionFactory connectionFactory) {
this.jmsTemplate = new JmsTemplate(connectionFactory);
}
/**
* Create a {@code JmsMessagingTemplate} instance with the {@link JmsTemplate} to use.
*/
public JmsMessagingTemplate(JmsTemplate jmsTemplate) {
Assert.notNull("JmsTemplate must not be null");
@@ -67,6 +78,27 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
}
/**
* Set the ConnectionFactory to use for the underlying {@link JmsTemplate}.
* @since 4.1.2
*/
public void setConnectionFactory(ConnectionFactory connectionFactory) {
if (this.jmsTemplate != null) {
this.jmsTemplate.setConnectionFactory(connectionFactory);
}
else {
this.jmsTemplate = new JmsTemplate(connectionFactory);
}
}
/**
* Return the ConnectionFactory that the underlying {@link JmsTemplate} uses.
* @since 4.1.2
*/
public ConnectionFactory getConnectionFactory() {
return (this.jmsTemplate != null ? this.jmsTemplate.getConnectionFactory() : null);
}
/**
* Set the {@link JmsTemplate} to use.
*/
@@ -92,6 +124,7 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
* @see org.springframework.jms.support.converter.MessagingMessageConverter
*/
public void setJmsMessageConverter(MessageConverter jmsMessageConverter) {
Assert.notNull(jmsMessageConverter, "MessageConverter must not be null");
this.jmsMessageConverter = jmsMessageConverter;
}
@@ -122,8 +155,7 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
@Override
public void afterPropertiesSet() {
Assert.notNull(getJmsTemplate(), "Property 'jmsTemplate' is required");
Assert.notNull(getJmsMessageConverter(), "Property 'jmsMessageConverter' is required");
Assert.notNull(getJmsTemplate(), "Property 'connectionFactory' or 'jmsTemplate' is required");
}