SWS-245, for real this time
This commit is contained in:
@@ -415,9 +415,8 @@ public class WebServiceTemplate extends WebServiceAccessor implements WebService
|
||||
return handleFault(connection, request, response);
|
||||
}
|
||||
else {
|
||||
Object extracted = responseExtractor.extractData(response);
|
||||
logResponse(request, response);
|
||||
return extracted;
|
||||
return responseExtractor.extractData(response);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -47,6 +47,25 @@ public abstract class AbstractReceiverConnection extends AbstractWebServiceConne
|
||||
return responseOutputStream;
|
||||
}
|
||||
|
||||
public final void close() throws IOException {
|
||||
try {
|
||||
if (requestInputStream != null) {
|
||||
requestInputStream.close();
|
||||
}
|
||||
}
|
||||
finally {
|
||||
onClose();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Template method invoked from {@link #close()}. Default implementation is empty.
|
||||
*
|
||||
* @throws IOException if an I/O error occurs when closing this connection
|
||||
*/
|
||||
protected void onClose() throws IOException {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an iteration over all the header names this request contains. Returns an empty <code>Iterator</code> if
|
||||
* there areno headers.
|
||||
@@ -89,6 +108,11 @@ public abstract class AbstractReceiverConnection extends AbstractWebServiceConne
|
||||
return getRequestHeaders(name);
|
||||
}
|
||||
|
||||
public void close() throws IOException {
|
||||
// defer close, some SoapMessage implementations (Axis) lazy-initialize the SOAPMessage
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/** Implementation of <code>TransportOutputStream</code> for sending-side connections. */
|
||||
|
||||
@@ -52,6 +52,25 @@ public abstract class AbstractSenderConnection extends AbstractWebServiceConnect
|
||||
}
|
||||
}
|
||||
|
||||
public final void close() throws IOException {
|
||||
try {
|
||||
if (responseInputStream != null) {
|
||||
responseInputStream.close();
|
||||
}
|
||||
}
|
||||
finally {
|
||||
onClose();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Template method invoked from {@link #close()}. Default implementation is empty.
|
||||
*
|
||||
* @throws IOException if an I/O error occurs when closing this connection
|
||||
*/
|
||||
protected void onClose() throws IOException {
|
||||
}
|
||||
|
||||
/** Indicates whether this connection has a response. */
|
||||
protected abstract boolean hasResponse() throws IOException;
|
||||
|
||||
@@ -109,6 +128,10 @@ public abstract class AbstractSenderConnection extends AbstractWebServiceConnect
|
||||
return getResponseHeaders(name);
|
||||
}
|
||||
|
||||
public void close() throws IOException {
|
||||
// defer close, some SoapMessage implementations (Axis) lazy-initialize the SOAPMessage
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ import org.apache.commons.httpclient.Header;
|
||||
import org.apache.commons.httpclient.HttpClient;
|
||||
import org.apache.commons.httpclient.methods.ByteArrayRequestEntity;
|
||||
import org.apache.commons.httpclient.methods.PostMethod;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.ws.WebServiceMessage;
|
||||
import org.springframework.ws.transport.WebServiceConnection;
|
||||
@@ -57,7 +58,7 @@ public class CommonsHttpConnection extends AbstractHttpSenderConnection {
|
||||
return postMethod;
|
||||
}
|
||||
|
||||
public void close() throws IOException {
|
||||
public void onClose() throws IOException {
|
||||
postMethod.releaseConnection();
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
package org.springframework.ws.transport.http;
|
||||
|
||||
import java.io.FilterInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
@@ -91,12 +90,7 @@ public class HttpServletConnection extends AbstractReceiverConnection
|
||||
}
|
||||
|
||||
protected InputStream getRequestInputStream() throws IOException {
|
||||
return new FilterInputStream(getHttpServletRequest().getInputStream()) {
|
||||
|
||||
public void close() throws IOException {
|
||||
// defer close, some SAAJ implementations (Axis 1) lazy-initialize the SOAPMessage
|
||||
}
|
||||
};
|
||||
return getHttpServletRequest().getInputStream();
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -115,7 +109,7 @@ public class HttpServletConnection extends AbstractReceiverConnection
|
||||
statusCodeSet = true;
|
||||
}
|
||||
|
||||
public void close() throws IOException {
|
||||
public void onClose() throws IOException {
|
||||
if (!statusCodeSet) {
|
||||
getHttpServletResponse().setStatus(HttpTransportConstants.STATUS_ACCEPTED);
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ public class HttpUrlConnection extends AbstractHttpSenderConnection {
|
||||
return connection;
|
||||
}
|
||||
|
||||
public void close() {
|
||||
public void onClose() {
|
||||
connection.disconnect();
|
||||
}
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ public class TcpReceiverConnection extends AbstractReceiverConnection {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void close() throws IOException {
|
||||
public void onClose() throws IOException {
|
||||
socket.close();
|
||||
}
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ public class TcpSenderConnection extends AbstractSenderConnection {
|
||||
return socket;
|
||||
}
|
||||
|
||||
public void close() throws IOException {
|
||||
public void onClose() throws IOException {
|
||||
socket.close();
|
||||
}
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ import org.springframework.ws.transport.support.EnumerationIterator;
|
||||
* @author Arjen Poutsma
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public class JmsReceiverConnection extends AbstractReceiverConnection implements WebServiceConnection {
|
||||
public class JmsReceiverConnection extends AbstractReceiverConnection {
|
||||
|
||||
private final BytesMessage requestMessage;
|
||||
|
||||
@@ -48,9 +48,7 @@ public class JmsReceiverConnection extends AbstractReceiverConnection implements
|
||||
|
||||
private BytesMessage responseMessage;
|
||||
|
||||
/**
|
||||
* Constructs a new JMS connection with the given parameters.
|
||||
*/
|
||||
/** Constructs a new JMS connection with the given parameters. */
|
||||
protected JmsReceiverConnection(BytesMessage requestMessage, Session session) {
|
||||
Assert.notNull(requestMessage, "requestMessage must not be null");
|
||||
Assert.notNull(session, "session must not be null");
|
||||
@@ -58,16 +56,12 @@ public class JmsReceiverConnection extends AbstractReceiverConnection implements
|
||||
this.session = session;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the request message for this connection.
|
||||
*/
|
||||
/** Returns the request message for this connection. */
|
||||
public BytesMessage getRequestMessage() {
|
||||
return requestMessage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the response message, if any, for this connection.
|
||||
*/
|
||||
/** Returns the response message, if any, for this connection. */
|
||||
public BytesMessage getResponseMessage() {
|
||||
return responseMessage;
|
||||
}
|
||||
@@ -152,7 +146,4 @@ public class JmsReceiverConnection extends AbstractReceiverConnection implements
|
||||
}
|
||||
}
|
||||
|
||||
public void close() throws IOException {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -242,7 +242,7 @@ public class JmsSenderConnection extends AbstractSenderConnection implements Web
|
||||
return new BytesMessageInputStream(responseMessage);
|
||||
}
|
||||
|
||||
public void close() throws IOException {
|
||||
protected void onClose() throws IOException {
|
||||
JmsUtils.closeSession(session);
|
||||
ConnectionFactoryUtils.releaseConnection(connection, connectionFactory, true);
|
||||
}
|
||||
|
||||
@@ -66,9 +66,7 @@ public class MailReceiverConnection extends AbstractReceiverConnection {
|
||||
|
||||
private InternetAddress from;
|
||||
|
||||
/**
|
||||
* Constructs a new Mail connection with the given parameters.
|
||||
*/
|
||||
/** Constructs a new Mail connection with the given parameters. */
|
||||
protected MailReceiverConnection(Message requestMessage, Session session) {
|
||||
Assert.notNull(requestMessage, "'requestMessage' must not be null");
|
||||
Assert.notNull(session, "'session' must not be null");
|
||||
@@ -76,16 +74,12 @@ public class MailReceiverConnection extends AbstractReceiverConnection {
|
||||
this.session = session;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the request message for this connection.
|
||||
*/
|
||||
/** Returns the request message for this connection. */
|
||||
public Message getRequestMessage() {
|
||||
return requestMessage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the response message, if any, for this connection.
|
||||
*/
|
||||
/** Returns the response message, if any, for this connection. */
|
||||
public Message getResponseMessage() {
|
||||
return responseMessage;
|
||||
}
|
||||
@@ -113,12 +107,9 @@ public class MailReceiverConnection extends AbstractReceiverConnection {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void close() throws IOException {
|
||||
}
|
||||
|
||||
/*
|
||||
* Receiving
|
||||
*/
|
||||
* Receiving
|
||||
*/
|
||||
|
||||
protected Iterator getRequestHeaderNames() throws IOException {
|
||||
try {
|
||||
|
||||
@@ -45,6 +45,7 @@ import javax.mail.search.SearchTerm;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.ws.WebServiceMessage;
|
||||
import org.springframework.ws.transport.AbstractSenderConnection;
|
||||
@@ -92,9 +93,7 @@ public class MailSenderConnection extends AbstractSenderConnection {
|
||||
|
||||
private Folder folder;
|
||||
|
||||
/**
|
||||
* Constructs a new Mail connection with the given parameters.
|
||||
*/
|
||||
/** Constructs a new Mail connection with the given parameters. */
|
||||
protected MailSenderConnection(Session session,
|
||||
URLName transportUri,
|
||||
URLName storeUri,
|
||||
@@ -111,16 +110,12 @@ public class MailSenderConnection extends AbstractSenderConnection {
|
||||
this.receiveTimeout = receiveTimeout;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the request message for this connection.
|
||||
*/
|
||||
/** Returns the request message for this connection. */
|
||||
public Message getRequestMessage() {
|
||||
return requestMessage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the response message, if any, for this connection.
|
||||
*/
|
||||
/** Returns the response message, if any, for this connection. */
|
||||
public Message getResponseMessage() {
|
||||
return responseMessage;
|
||||
}
|
||||
@@ -287,7 +282,7 @@ public class MailSenderConnection extends AbstractSenderConnection {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void close() throws IOException {
|
||||
public void onClose() throws IOException {
|
||||
MailTransportUtils.closeFolder(folder, deleteAfterReceive);
|
||||
MailTransportUtils.closeService(store);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user