Skip to content

Commit e02c23e

Browse files
committed
Straight JmsMessagingTemplate setup based on JMS ConnectionFactory
Issue: SPR-12413
1 parent 794566a commit e02c23e

File tree

1 file changed

+36
-4
lines changed

1 file changed

+36
-4
lines changed

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

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.springframework.jms.core;
1818

1919
import java.util.Map;
20+
import javax.jms.ConnectionFactory;
2021
import javax.jms.Destination;
2122
import javax.jms.JMSException;
2223
import javax.jms.Session;
@@ -39,6 +40,7 @@
3940
* An implementation of {@link JmsMessageOperations}.
4041
*
4142
* @author Stephane Nicoll
43+
* @author Juergen Hoeller
4244
* @since 4.1
4345
*/
4446
public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
@@ -53,20 +55,50 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
5355

5456
/**
5557
* Constructor for use with bean properties.
56-
* Requires {@link #setJmsTemplate} to be called.
58+
* Requires {@link #setConnectionFactory} or {@link #setJmsTemplate} to be called.
5759
*/
5860
public JmsMessagingTemplate() {
5961
}
6062

6163
/**
62-
* Create an instance with the {@link JmsTemplate} to use.
64+
* Create a {@code JmsMessagingTemplate} instance with the JMS {@link ConnectionFactory}
65+
* to use, implicitly building a {@link JmsTemplate} based on it.
66+
* @since 4.1.2
67+
*/
68+
public JmsMessagingTemplate(ConnectionFactory connectionFactory) {
69+
this.jmsTemplate = new JmsTemplate(connectionFactory);
70+
}
71+
72+
/**
73+
* Create a {@code JmsMessagingTemplate} instance with the {@link JmsTemplate} to use.
6374
*/
6475
public JmsMessagingTemplate(JmsTemplate jmsTemplate) {
6576
Assert.notNull("JmsTemplate must not be null");
6677
this.jmsTemplate = jmsTemplate;
6778
}
6879

6980

81+
/**
82+
* Set the ConnectionFactory to use for the underlying {@link JmsTemplate}.
83+
* @since 4.1.2
84+
*/
85+
public void setConnectionFactory(ConnectionFactory connectionFactory) {
86+
if (this.jmsTemplate != null) {
87+
this.jmsTemplate.setConnectionFactory(connectionFactory);
88+
}
89+
else {
90+
this.jmsTemplate = new JmsTemplate(connectionFactory);
91+
}
92+
}
93+
94+
/**
95+
* Return the ConnectionFactory that the underlying {@link JmsTemplate} uses.
96+
* @since 4.1.2
97+
*/
98+
public ConnectionFactory getConnectionFactory() {
99+
return (this.jmsTemplate != null ? this.jmsTemplate.getConnectionFactory() : null);
100+
}
101+
70102
/**
71103
* Set the {@link JmsTemplate} to use.
72104
*/
@@ -92,6 +124,7 @@ public JmsTemplate getJmsTemplate() {
92124
* @see org.springframework.jms.support.converter.MessagingMessageConverter
93125
*/
94126
public void setJmsMessageConverter(MessageConverter jmsMessageConverter) {
127+
Assert.notNull(jmsMessageConverter, "MessageConverter must not be null");
95128
this.jmsMessageConverter = jmsMessageConverter;
96129
}
97130

@@ -122,8 +155,7 @@ public String getDefaultDestinationName() {
122155

123156
@Override
124157
public void afterPropertiesSet() {
125-
Assert.notNull(getJmsTemplate(), "Property 'jmsTemplate' is required");
126-
Assert.notNull(getJmsMessageConverter(), "Property 'jmsMessageConverter' is required");
158+
Assert.notNull(getJmsTemplate(), "Property 'connectionFactory' or 'jmsTemplate' is required");
127159
}
128160

129161

0 commit comments

Comments
 (0)