2017-07-20 1 views
0

は、私が持っている:tomcatの応答オブジェクトの内容を確認する方法は?私のGrailsアプリケーションで

response.outputStream << resultBytes; //result bytes contains my data 

これはレスポンスヘッダがあるcsv形式でのコンテンツダウンロード:

["Content-disposition": "attachment; filename=\"${fileName}\""] 

は、開発ではenvironementデータは罰金が、本番のような他の環境でダウンロードされるが、同じ量のデータがダウンロードされると、壊れたパイプ例外が発生します。私はこれが何らかの種類のTomcatの問題だと思っています(場合によってはバッファやストリームをフラッシュできませんでした)。問題の原因を正確にはわかりません。助けてください。

例外は次のとおりです。

2017-07-13 14:51:59,751 [http-nio-8453-exec-16] ERROR StackTrace Full Stack Trace: 
org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe 
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:393) 
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:344) 
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:418) 
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:406) 
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:97) 
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:90) 
at org.codehaus.groovy.runtime.IOGroovyMethods.leftShift(IOGroovyMethods.java:256) 
at org.codehaus.groovy.runtime.dgm$839.invoke(Unknown Source) 
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:274) 
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:56) 
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) 
at com.deerwalk.exs.SearchReportDirectController.doSearchExport(SearchReportDirectController.groovy:40) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:497) 
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210) 
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59) 
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:174) 
at com.deerwalk.exs.AbstractReportController.doCsvExport(AbstractReportController.groovy:36) 
at com.deerwalk.exs.AbstractReportController.doCsvExport(AbstractReportController.groovy) 
at org.grails.core.DefaultGrailsControllerClass$MethodHandleInvoker.invoke(DefaultGrailsControllerClass.java:222) 
at org.grails.core.DefaultGrailsControllerClass.invoke(DefaultGrailsControllerClass.java:187) 
at org.grails.web.mapping.mvc.UrlMappingsInfoHandlerAdapter.handle(UrlMappingsInfoHandlerAdapter.groovy:88) 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:968) 
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:870) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648) 
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:844) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
+0

【使い方の可能性のある重複修正するにはjava.net.SocketException:壊れたパイプ?](https://stackoverflow.com/questions/2309561/how-to-fix-java-net-socketexception-broken-pipe) –

+0

私は推測するユーザーダウンロードが完了する前にブラウザを閉じて、パイプの破損を壊した –

答えて

0

これは移動するための方法であるOutputStreamに直接

をデータをプッシュするときに、IOExceptionsを処理する必要があります。https://gist.github.com/jameskleeh/05077c4c8552d8cb1663fbac9bc674f2

def outputStream = response.outputStream 
response.setContentType("application/octet-stream") 
response.setHeader("Content-disposition", "filename=\"${name}\"") 

try { 
    outputStream << <Your byte array here> 
} catch (IOException e){ 
    null 
} finally { 
    if (outputStream != null){ 
     try { 
      outputStream.close() 
     } catch (IOException e) { 
      null 
     } 
    } 
} 
関連する問題