From c45ad66f5f415ed9ccb19c4a1a8df91fd336e24e Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Thu, 13 Nov 2014 14:19:08 +0000 Subject: [PATCH] updated to fix ClientAbortException git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-transfer/uri-resolver@101610 82a268e6-3cf1-43bd-a215-b396298e98cf --- .classpath | 8 +++-- pom.xml | 12 +++++-- .../resolver/http/HttpResolver.java | 34 ++++++++++++++++--- 3 files changed, 44 insertions(+), 10 deletions(-) diff --git a/.classpath b/.classpath index e075fe7..8da6250 100644 --- a/.classpath +++ b/.classpath @@ -6,7 +6,11 @@ - + + + + + @@ -26,7 +30,7 @@ - + diff --git a/pom.xml b/pom.xml index 6d623bd..f532af7 100644 --- a/pom.xml +++ b/pom.xml @@ -16,6 +16,12 @@ + + + + + + junit junit @@ -102,7 +108,7 @@ - + src/main/java @@ -110,7 +116,7 @@ **/*.* - + src/main/resources @@ -120,7 +126,7 @@ ${artifactId} - + org.apache.maven.plugins diff --git a/src/main/java/org/gcube/datatransfer/resolver/http/HttpResolver.java b/src/main/java/org/gcube/datatransfer/resolver/http/HttpResolver.java index aa49430..af0e2e4 100644 --- a/src/main/java/org/gcube/datatransfer/resolver/http/HttpResolver.java +++ b/src/main/java/org/gcube/datatransfer/resolver/http/HttpResolver.java @@ -3,6 +3,7 @@ package org.gcube.datatransfer.resolver.http; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.net.SocketException; import java.net.URL; import java.net.URLConnection; import java.net.URLStreamHandler; @@ -106,7 +107,6 @@ public class HttpResolver extends HttpServlet { response.setContentType("unknown/unknown"); - URL url = new URL(null, uri, new URLStreamHandler() { @Override @@ -125,21 +125,45 @@ public class HttpResolver extends HttpServlet { } catch(Exception e){ response.sendError(404); - logger.error("Exception:", e); + logger.error("URLConnection Exception:", e); return; } + /* IOUtils.copy(in, out); out.flush(); out.close(); in.close(); - + */ + + //CHANGED BY FRANCESCO M. + try { + + IOUtils.copy(in, out); + + } catch (SocketException e){ + if (!e.getClass().getSimpleName().equals("ClientAbortException")) + throw e; + else + logger.warn("Skipping ClientAbortException: "+e.getMessage()); + } finally { + IOUtils.closeQuietly(in); + IOUtils.closeQuietly(out); + } + } catch (Exception e) { - e.printStackTrace(); +// e.printStackTrace(); logger.error("Exception:", e); - response.sendError(404); +// response.sendError(404); + + //CHANGED BY FRANCESCO M. + if(!response.isCommitted()) + response.sendError(404); + else + logger.warn("Response already committed, skipped send Error 404"); + return; }