Browse Source

Straight JmsMessagingTemplate setup based on JMS ConnectionFactory

Issue: SPR-12413
pull/692/head
Juergen Hoeller 12 years ago
parent
commit
e02c23eea4
  1. 40
      spring-jms/src/main/java/org/springframework/jms/core/JmsMessagingTemplate.java

40
spring-jms/src/main/java/org/springframework/jms/core/JmsMessagingTemplate.java

@ -17,6 +17,7 @@
package org.springframework.jms.core; package org.springframework.jms.core;
import java.util.Map; import java.util.Map;
import javax.jms.ConnectionFactory;
import javax.jms.Destination; import javax.jms.Destination;
import javax.jms.JMSException; import javax.jms.JMSException;
import javax.jms.Session; import javax.jms.Session;
@ -39,6 +40,7 @@ import org.springframework.util.Assert;
* An implementation of {@link JmsMessageOperations}. * An implementation of {@link JmsMessageOperations}.
* *
* @author Stephane Nicoll * @author Stephane Nicoll
* @author Juergen Hoeller
* @since 4.1 * @since 4.1
*/ */
public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination> public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
@ -53,13 +55,22 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
/** /**
* Constructor for use with bean properties. * Constructor for use with bean properties.
* Requires {@link #setJmsTemplate} to be called. * Requires {@link #setConnectionFactory} or {@link #setJmsTemplate} to be called.
*/ */
public JmsMessagingTemplate() { 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) { public JmsMessagingTemplate(JmsTemplate jmsTemplate) {
Assert.notNull("JmsTemplate must not be null"); 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. * Set the {@link JmsTemplate} to use.
*/ */
@ -92,6 +124,7 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
* @see org.springframework.jms.support.converter.MessagingMessageConverter * @see org.springframework.jms.support.converter.MessagingMessageConverter
*/ */
public void setJmsMessageConverter(MessageConverter jmsMessageConverter) { public void setJmsMessageConverter(MessageConverter jmsMessageConverter) {
Assert.notNull(jmsMessageConverter, "MessageConverter must not be null");
this.jmsMessageConverter = jmsMessageConverter; this.jmsMessageConverter = jmsMessageConverter;
} }
@ -122,8 +155,7 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
@Override @Override
public void afterPropertiesSet() { public void afterPropertiesSet() {
Assert.notNull(getJmsTemplate(), "Property 'jmsTemplate' is required"); Assert.notNull(getJmsTemplate(), "Property 'connectionFactory' or 'jmsTemplate' is required");
Assert.notNull(getJmsMessageConverter(), "Property 'jmsMessageConverter' is required");
} }

Loading…
Cancel
Save