erreur d'ouverture d'un document
salut,
j'ai essayé d'ouvrir un document en utilisant code javscript qui va exécuter une servlet
code javascript :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| function action_consultation(grid, record, row, col) {
var url = "<c:url value='/printer'/>?method=consultDoc&guid="+ record.get('id')
;
window.open(url);
} |
code servlet :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| public class PrinterServlet extends HttpServlet {
protected static Logger log = Logger.getLogger(PrinterServlet.class);
private static final String URL_METHOD = "method";
private static final long serialVersionUID = -6079308419049730421L;
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String methodName = request.getParameter(URL_METHOD);
System.out.println(" ::: ---method --------- =" + methodName);
try {
if ("consultDoc".equals(methodName)) {
this.consultDoc(request, response);
}
} catch (Exception e) {
}
}
protected void consultDoc(HttpServletRequest request, HttpServletResponse response) throws Exception {
DossierJuridiqueManager dossierJuridiqueManager = (DossierJuridiqueManager) PortalUtil.getBean(DossierJuridiqueManager.managerid);
byte[] file = new byte[1024];
file=dossierJuridiqueManager.consultDoc1(request, response, null, request.getParameter("guid"));
if ((file != null) && (file.length > 0)) {
response.setContentType("application/pdf");
response.setContentLength(file.length);
try {
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(file, 0, file.length);
ouputStream.flush();
ouputStream.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
} |
mais lors de test j'ai l'erreur suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| content type = application/pdf
fileName = testt.pdf
content Size = 287129.0
ClientAbortException: java.net.SocketException: Software caused connection abort: socket write error
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:378)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:373)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:403)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:391)
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:91)
at com.dq.foprodex.web.testServlet.PrinterServlet.consultDoc(PrinterServlet.java:66)
at com.dq.foprodex.web.testServlet.PrinterServlet.service(PrinterServlet.java:44)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.net.SocketException: Software caused connection abort: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:216)
at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:460)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:368)
at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:241)
at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:84)
at org.apache.coyote.http11.AbstractOutputBuffer.doWrite(AbstractOutputBuffer.java:192)
at org.apache.coyote.Response.doWrite(Response.java:533) |
merci d'avance