While writing to the output stream, I get the following stacktrace:
11:03:00,031 INFO  [Util] 0: Writing 16,384 bytes of 57,567 to buffer
  | 11:41:42,202 INFO  [Util] 0: Writing 16,384 bytes of 57,567 to buffer
  | 11:41:42,202 INFO  [Util] 0: Writing 16,384 bytes of 57,567 to buffer
  | 11:41:42,202 INFO  [Util] 0: Writing 16,384 bytes of 57,567 to buffer
  | 11:41:42,202 ERROR [Util] Error serving file: <path to file>
  | ClientAbortException:  java.net.SocketException: Connection reset by peer: 
socket write error
  |         at 
org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:366)
  |         at 
org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:433)
  |         at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:348)
  |         at 
org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:392)
  |         at 
org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:381)
  |         at 
org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:88)
  |         at com.mycompany.myproject.Util.download(Util.java:93)

My code that does the writing is here:
        public static void download(HttpServletResponse response, File file, 
String downloadName)
  |                     throws IOException {
  |             FileInputStream fis = null;
  |             OutputStream os = null;
  |             if(file != null && file.exists()) {
  |                     try {
  |                             byte[] buf = new byte[BUF_SIZE];
  |                 if(downloadName != null && downloadName.trim().length() > 0)
  |                         response.setHeader("Content-Disposition", 
"attachment;filename=\"" +
  |                                     downloadName + "\"");
  |                 response.setHeader("Cache-Control", "no-store");
  |                 response.setHeader("Pragma", "no-cache");
  |                 response.setDateHeader("Expires", 0);
  |                 response.setContentType("application/octet-stream");
  |                 fis = new FileInputStream(file);
  |                     os = response.getOutputStream();
  |                     int len = -1;
  |                     int x = 0;
  |                     while((len = fis.read(buf)) != -1) {
  |                             log.info("{0}: Writing {1} bytes of {2} to 
buffer", x, len, file.length());
  |                             os.write(buf, 0, len);
  |                     }
  |                     } catch (Throwable t) {
  |                             log.error("Error serving file: "+file, t);
  |                             
response.sendError(HttpServletResponse.SC_NOT_FOUND);
  |                     } finally {
  |                             if(fis != null) 
try{fis.close();}catch(Throwable t){
  |                                     log.warn("Error closing input stream: " 
+ t.getMessage(), t);
  |                             }
  |                             if( os != null) try{ 
os.flush();}catch(Throwable t){
  |                                     
if("org.apache.catalina.connector.ClientAbortException".equals(t.getClass().getCanonicalName()))
  |                                             log.info("client canceled 
download");
  |                                     else
  |                                             log.warn("Error flushing output 
stream: " + t.getClass().getCanonicalName(), t);
  |                             }
  |                             if( os != null) try{ 
os.close();}catch(Throwable t){
  |                                     log.warn("Error closing output stream: 
" + t.getMessage(), t);
  |                             }
  |                     }
  |             } else {
  |                     log.error("Error serving unknown file: "+file);
  |                     response.sendError(HttpServletResponse.SC_NOT_FOUND);
  |             }
  |     }

It works just fine under http, but croaks in https. This is with a self-signed 
certificate, after accepting it, of course.

I checked the request path, and it is using the https protocol.

One problem I'm having on that page is that IE believes that the page contains 
both secure and unsecure items. However, our entire web app is completely under 
https, and there are no references to external resources. Looking at the source 
of the page, the only things with "http:" in them are the DOCTYPE dtd and the 
html xmlns declarations. Could that possibly have anything to do with it?

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4101048#4101048

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4101048
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to