diff --git a/support/src/main/java/org/springframework/ws/transport/jms/JmsMessageSender.java b/support/src/main/java/org/springframework/ws/transport/jms/JmsMessageSender.java index eed92cbf..fc63d7d5 100644 --- a/support/src/main/java/org/springframework/ws/transport/jms/JmsMessageSender.java +++ b/support/src/main/java/org/springframework/ws/transport/jms/JmsMessageSender.java @@ -20,6 +20,7 @@ import java.io.IOException; import java.net.URI; import javax.jms.BytesMessage; import javax.jms.Connection; +import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageConsumer; @@ -37,7 +38,8 @@ import org.springframework.ws.transport.WebServiceMessageSender; import org.springframework.ws.transport.jms.support.JmsTransportUtils; /** - * {@link WebServiceMessageSender} implementation that uses JMS {@link BytesMessage}. + * {@link WebServiceMessageSender} implementation that uses JMS {@link BytesMessage}s. Requires a JMS {@link + * ConnectionFactory} to operate. *
* This message sender supports URI's of the following format:jms:destination[?param-name=param-value][¶m-name=param-value]* *where the characters :, ?, and & stand for @@ -58,7 +60,7 @@ import org.springframework.ws.transport.jms.support.JmsTransportUtils; * Some examples of JMS URIs are: * *
jms:SomeQueue+ * jms:RequestQueue?replyToName=ResponseQueueName * * @author Arjen Poutsma * @see IRI Scheme for Java(tm) Message @@ -72,9 +74,26 @@ public class JmsMessageSender extends JmsDestinationAccessor implements WebServi private long receiveTimeout = DEFAULT_RECEIVE_TIMEOUT; + /** + * Create a new
jms:SomeTopic?priority=3&deliveryMode=NON_PERSISTENT
- * jms:RequestQueue?replyToName=ResponseName
JmsMessageSender
+ *
+ * Note: The ConnectionFactory has to be set before using the instance. This constructor can be used to
+ * prepare a JmsTemplate via a BeanFactory, typically setting the ConnectionFactory via setConnectionFactory.
+ *
+ * @see #setConnectionFactory(ConnectionFactory)
+ */
public JmsMessageSender() {
}
+ /**
+ * Create a new JmsMessageSender, given a ConnectionFactory.
+ *
+ * @param connectionFactory the ConnectionFactory to obtain Connections from
+ */
+ public JmsMessageSender(ConnectionFactory connectionFactory) {
+ setConnectionFactory(connectionFactory);
+ }
+
/**
* Set the timeout to use for receive calls. The default is -1, which means no timeout.
*
diff --git a/support/src/main/java/org/springframework/ws/transport/jms/JmsSenderConnection.java b/support/src/main/java/org/springframework/ws/transport/jms/JmsSenderConnection.java
index 66aba84e..713bec42 100644
--- a/support/src/main/java/org/springframework/ws/transport/jms/JmsSenderConnection.java
+++ b/support/src/main/java/org/springframework/ws/transport/jms/JmsSenderConnection.java
@@ -40,7 +40,8 @@ import org.springframework.ws.transport.WebServiceConnection;
import org.springframework.ws.transport.support.EnumerationIterator;
/**
- * Implementation of {@link WebServiceConnection} that is used for client-side JMS access.
+ * Implementation of {@link WebServiceConnection} that is used for client-side JMS access. Exposes a {@link
+ * BytesMessage} request and response message.
*
* @author Arjen Poutsma
* @since 1.1.0
diff --git a/support/src/main/java/org/springframework/ws/transport/jms/JmsTransportException.java b/support/src/main/java/org/springframework/ws/transport/jms/JmsTransportException.java
index 51ead6a4..62d1ab0e 100644
--- a/support/src/main/java/org/springframework/ws/transport/jms/JmsTransportException.java
+++ b/support/src/main/java/org/springframework/ws/transport/jms/JmsTransportException.java
@@ -32,11 +32,13 @@ public class JmsTransportException extends TransportException {
public JmsTransportException(String msg, JMSException ex) {
super(msg + ": " + ex.getMessage());
+ initCause(ex);
jmsException = ex;
}
public JmsTransportException(JMSException ex) {
super(ex.getMessage());
+ initCause(ex);
jmsException = ex;
}
diff --git a/support/src/test/java/org/springframework/ws/transport/jms/support/JmsTransportUtilsTest.java b/support/src/test/java/org/springframework/ws/transport/jms/support/JmsTransportUtilsTest.java
index 42ba9579..9f2ac769 100644
--- a/support/src/test/java/org/springframework/ws/transport/jms/support/JmsTransportUtilsTest.java
+++ b/support/src/test/java/org/springframework/ws/transport/jms/support/JmsTransportUtilsTest.java
@@ -24,6 +24,16 @@ import junit.framework.TestCase;
public class JmsTransportUtilsTest extends TestCase {
+ public void testGetDestinationName() throws Exception {
+ URI uri = new URI("jms:RequestQueue?replyToName=RESP_QUEUE");
+ String destinationName = JmsTransportUtils.getDestinationName(uri);
+ assertEquals("Invalid destination", "RequestQueue", destinationName);
+
+ uri = new URI("jms:RequestQueue");
+ destinationName = JmsTransportUtils.getDestinationName(uri);
+ assertEquals("Invalid destination", "RequestQueue", destinationName);
+ }
+
public void testGetDeliveryMode() throws Exception {
URI uri = new URI("jms:RequestQueue?deliveryMode=NON_PERSISTENT");
int deliveryMode = JmsTransportUtils.getDeliveryMode(uri);
@@ -67,14 +77,4 @@ public class JmsTransportUtilsTest extends TestCase {
replyToName = JmsTransportUtils.getReplyToName(uri);
assertNull("Invalid replyToName", replyToName);
}
-
- public void testGetDestinationName() throws Exception {
- URI uri = new URI("jms:RequestQueue?replyToName=RESP_QUEUE");
- String destinationName = JmsTransportUtils.getDestinationName(uri);
- assertEquals("Invalid destination", "RequestQueue", destinationName);
-
- uri = new URI("jms:RequestQueue");
- destinationName = JmsTransportUtils.getDestinationName(uri);
- assertEquals("Invalid destination", "RequestQueue", destinationName);
- }
}
\ No newline at end of file
diff --git a/support/src/test/java/org/springframework/ws/transport/jms/EchoPayloadEndpoint.java b/support/src/test/java/org/springframework/ws/transport/support/EchoPayloadEndpoint.java
similarity index 94%
rename from support/src/test/java/org/springframework/ws/transport/jms/EchoPayloadEndpoint.java
rename to support/src/test/java/org/springframework/ws/transport/support/EchoPayloadEndpoint.java
index 874258c8..a1754c84 100644
--- a/support/src/test/java/org/springframework/ws/transport/jms/EchoPayloadEndpoint.java
+++ b/support/src/test/java/org/springframework/ws/transport/support/EchoPayloadEndpoint.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.ws.transport.jms;
+package org.springframework.ws.transport.support;
import javax.xml.transform.Source;
diff --git a/support/src/test/resources/org/springframework/ws/transport/jms/jms-applicationContext.xml b/support/src/test/resources/org/springframework/ws/transport/jms/jms-applicationContext.xml
index 7a561a18..a133ed53 100644
--- a/support/src/test/resources/org/springframework/ws/transport/jms/jms-applicationContext.xml
+++ b/support/src/test/resources/org/springframework/ws/transport/jms/jms-applicationContext.xml
@@ -1,6 +1,6 @@