Author: ay
Date: Tue Feb 26 15:45:44 2013
New Revision: 1450233
URL: http://svn.apache.org/r1450233
Log:
[CXF-4857] Workaround for Socket Closed exception for jdk1.6
Modified:
cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java
Modified:
cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java?rev=1450233&r1=1450232&r2=1450233&view=diff
==============================================================================
---
cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java
(original)
+++
cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java
Tue Feb 26 15:45:44 2013
@@ -24,6 +24,7 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.Proxy;
+import java.net.SocketException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
@@ -162,12 +163,23 @@ public class URLConnectionHTTPConduit ex
protected void setupWrappedStream() throws IOException {
// If we need to cache for retransmission, store data in a
// CacheAndWriteOutputStream. Otherwise write directly to the
output stream.
+ OutputStream cout = null;
+ try {
+ cout = connection.getOutputStream();
+ } catch (SocketException e) {
+ if ("Socket Closed".equals(e.getMessage())) {
+ connection.connect();
+ cout = connection.getOutputStream();
+ } else {
+ throw e;
+ }
+ }
if (cachingForRetransmission) {
cachedStream =
- new
CacheAndWriteOutputStream(connection.getOutputStream());
+ new CacheAndWriteOutputStream(cout);
wrappedStream = cachedStream;
} else {
- wrappedStream = connection.getOutputStream();
+ wrappedStream = cout;
}
}