SWS-383
This commit is contained in:
@@ -32,6 +32,7 @@ import javax.jms.MessageConsumer;
|
||||
import javax.jms.MessageProducer;
|
||||
import javax.jms.Session;
|
||||
import javax.jms.TemporaryQueue;
|
||||
import javax.jms.TemporaryTopic;
|
||||
import javax.jms.TextMessage;
|
||||
|
||||
import org.springframework.jms.connection.ConnectionFactoryUtils;
|
||||
@@ -214,7 +215,14 @@ public class JmsSenderConnection extends AbstractSenderConnection {
|
||||
protected void onReceiveBeforeRead() throws IOException {
|
||||
MessageConsumer messageConsumer = null;
|
||||
try {
|
||||
messageConsumer = session.createConsumer(responseDestination);
|
||||
if (responseDestination instanceof TemporaryQueue || responseDestination instanceof TemporaryTopic) {
|
||||
messageConsumer = session.createConsumer(responseDestination);
|
||||
}
|
||||
else {
|
||||
String messageId = requestMessage.getJMSMessageID().replaceAll("'", "''");
|
||||
String messageSelector = "JMSCorrelationID = '" + messageId + "'";
|
||||
messageConsumer = session.createConsumer(responseDestination, messageSelector);
|
||||
}
|
||||
Message message = receiveTimeout >= 0 ? messageConsumer.receive(receiveTimeout) : messageConsumer.receive();
|
||||
if (message instanceof BytesMessage || message instanceof TextMessage) {
|
||||
responseMessage = message;
|
||||
@@ -237,6 +245,14 @@ public class JmsSenderConnection extends AbstractSenderConnection {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
else if (responseDestination instanceof TemporaryTopic) {
|
||||
try {
|
||||
((TemporaryTopic) responseDestination).delete();
|
||||
}
|
||||
catch (JMSException e) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,13 +16,13 @@
|
||||
|
||||
package org.springframework.ws.transport.jms;
|
||||
|
||||
import org.custommonkey.xmlunit.XMLAssert;
|
||||
|
||||
import org.springframework.test.AbstractDependencyInjectionSpringContextTests;
|
||||
import org.springframework.ws.client.core.WebServiceTemplate;
|
||||
import org.springframework.xml.transform.StringResult;
|
||||
import org.springframework.xml.transform.StringSource;
|
||||
|
||||
import org.custommonkey.xmlunit.XMLAssert;
|
||||
|
||||
public class JmsIntegrationTest extends AbstractDependencyInjectionSpringContextTests {
|
||||
|
||||
private WebServiceTemplate webServiceTemplate;
|
||||
@@ -35,11 +35,23 @@ public class JmsIntegrationTest extends AbstractDependencyInjectionSpringContext
|
||||
this.webServiceTemplate = webServiceTemplate;
|
||||
}
|
||||
|
||||
public void testJmsTransport() throws Exception {
|
||||
protected void onTearDown() throws Exception {
|
||||
applicationContext.close();
|
||||
setDirty();
|
||||
}
|
||||
|
||||
public void testTemporaryQueue() throws Exception {
|
||||
String content = "<root xmlns='http://springframework.org/spring-ws'><child/></root>";
|
||||
StringResult result = new StringResult();
|
||||
webServiceTemplate.sendSourceAndReceiveToResult(new StringSource(content), result);
|
||||
XMLAssert.assertXMLEqual("Invalid content received", content, result.toString());
|
||||
applicationContext.close();
|
||||
}
|
||||
|
||||
public void testPermanentQueue() throws Exception {
|
||||
String url = "jms:RequestQueue?deliveryMode=NON_PERSISTENT;replyToName=ResponseQueue";
|
||||
String content = "<root xmlns='http://springframework.org/spring-ws'><child/></root>";
|
||||
StringResult result = new StringResult();
|
||||
webServiceTemplate.sendSourceAndReceiveToResult(url, new StringSource(content), result);
|
||||
XMLAssert.assertXMLEqual("Invalid content received", content, result.toString());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user