17
17
package org .springframework .jms .core ;
18
18
19
19
import java .util .Map ;
20
+ import javax .jms .ConnectionFactory ;
20
21
import javax .jms .Destination ;
21
22
import javax .jms .JMSException ;
22
23
import javax .jms .Session ;
39
40
* An implementation of {@link JmsMessageOperations}.
40
41
*
41
42
* @author Stephane Nicoll
43
+ * @author Juergen Hoeller
42
44
* @since 4.1
43
45
*/
44
46
public class JmsMessagingTemplate extends AbstractMessagingTemplate <Destination >
@@ -53,20 +55,50 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
53
55
54
56
/**
55
57
* Constructor for use with bean properties.
56
- * Requires {@link #setJmsTemplate} to be called.
58
+ * Requires {@link #setConnectionFactory} or {@link # setJmsTemplate} to be called.
57
59
*/
58
60
public JmsMessagingTemplate () {
59
61
}
60
62
61
63
/**
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.
63
74
*/
64
75
public JmsMessagingTemplate (JmsTemplate jmsTemplate ) {
65
76
Assert .notNull ("JmsTemplate must not be null" );
66
77
this .jmsTemplate = jmsTemplate ;
67
78
}
68
79
69
80
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
+
70
102
/**
71
103
* Set the {@link JmsTemplate} to use.
72
104
*/
@@ -92,6 +124,7 @@ public JmsTemplate getJmsTemplate() {
92
124
* @see org.springframework.jms.support.converter.MessagingMessageConverter
93
125
*/
94
126
public void setJmsMessageConverter (MessageConverter jmsMessageConverter ) {
127
+ Assert .notNull (jmsMessageConverter , "MessageConverter must not be null" );
95
128
this .jmsMessageConverter = jmsMessageConverter ;
96
129
}
97
130
@@ -122,8 +155,7 @@ public String getDefaultDestinationName() {
122
155
123
156
@ Override
124
157
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" );
127
159
}
128
160
129
161
0 commit comments