2016-06-07 9 views
0

Ich verschwende nicht meine und Ihre Zeit in die Exposition meiner Vermutungen, meine Schlussfolgerungen, meine Hypothese ...
so, "ex abrupto" (Prämisse: Ich benutze einen Strom um zu produzieren ein pdf mit iText):
Dies ist der Code: in der Aktionjava.io.IOException mit iText

public String getPDF() { 
    PdfPratDTO dto = (PdfPratDTO) sexxion.get("pdfprdto"); 
    String numprat = dto.getNumPrat(); 
    String intest = dto.getIntest(); 
    ArrayList<PratDettAvanzDTO> avzs = dto.getDetavz(); 

    ByteArrayOutputStream buffer = new ByteArrayOutputStream(); 

    Document document = new Document(); 
    try { 
     PdfWriter writer = PdfWriter.getInstance(document, buffer); 

     document.open(); 

      StaticElements.addMetaData(document, numprat, "P"); 

      try { 
       BodyElements.addTitle(writer, document, numprat, intest, "P"); 
      } 
      catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } 
      catch (IOException e) { 
       e.printStackTrace(); 
      } 

      BodyElements.addContents(document, avzs, "P"); 

      document.close(); 
     } 
     catch (DocumentException e) { 
      e.printStackTrace(); 
     } 

     setInputStream(new ByteArrayInputStream(buffer.toByteArray())); 

    return SUCCESS; 
} 

keine Aufruf Probleme

StaticElements.addMetaData(document, numprat, "P"); 

und nicht einmal telefonieren

BodyElements.addTitle(writer, document, numprat, intest, "P"); 

das Dokument korrekt gedruckt wird, diese Elemente zeigt, aber wenn ich

BodyElements.addContents(document, avzs, "P"); 

dh

@SuppressWarnings("unchecked") 
public static void addContents(Document document, Object data, String type) throws DocumentException { 

    Paragraph header = new Paragraph(); 
    StaticElements.addEmptyLine(header, 3); 

    if (type.equals("U")) 
     createTable(header, (UserDTO) data); 
    else if (type.equals("P")) 
     createTablePrat(header, (ArrayList<PratDettAvanzDTO>) data); 
    document.add(header); 
} 

private static void createTablePrat(Paragraph header, List<PratDettAvanzDTO> avzs) throws BadElementException { 
    float[] columnWidths = {8,33,5,10,9,9,5,7,14}; 
    PdfPTable table = new PdfPTable(columnWidths); 

    PdfPCell c1 = new PdfPCell(new Phrase("Date")); 
    c1.setFixedHeight(21f); 
    c1.setBackgroundColor(new BaseColor(221, 232, 250)); 
    c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
    table.addCell(c1); 

    c1 = new PdfPCell(new Phrase("Description")); 
    table.addCell(c1); 

    c1 = new PdfPCell(new Phrase("St. Pr. Code")); 
    table.addCell(c1); 

    etc.etc. 

    c1 = new PdfPCell(new Phrase("Purpose")); 
    table.addCell(c1); 
    table.setHeaderRows(1); 


    System.out.println("-> createTablePrat.size()=" + avzs.size()); 
    //TODO 

    header.add(table); 
} 

das Dokument hinzufügen wird noch gedruckt, aber noch bevor das heißt wie ohne dieses neue Element und, in den besten Fällen (am besten ... nur um zu schauen) bleibt der Konsolenausgang gehängt, in den meisten Fällen zeigt der folgende Fehler

07/06 12:35:10| ERROR [http-apr-10080-exec-9] (CommonsLogger.java:38) - Exception occurred during processing request: java.io.IOException: APR error: -730053 
org.apache.catalina.connector.ClientAbortException: java.io.IOException: APR error: -730053 
     at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:353) 
     at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:317) 
     at org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:110) 
     at org.apache.struts2.dispatcher.StreamResult.doExecute(StreamResult.java:301) 
     at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186) 
     at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:367) 
     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:271) 
     at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256) 
     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
     at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176) 
     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
     at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265) 
     at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) 
     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
     at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138) 
     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
     at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:238) 
     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
     at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:238) 
     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
     at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191) 
     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
     at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73) 
     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
     at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91) 
     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
     at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252) 
     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
     at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) 
     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
     at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) 
     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
     at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) 
     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
     at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) 
     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
     at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) 
     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
     at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) 
     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
     at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193) 
     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
     at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) 
     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
     at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) 
     at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:544) 
     at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) 
     at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
     at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) 
     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) 
     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668) 
     at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2463) 
     at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2452) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: java.io.IOException: APR error: -730053 
     at org.apache.coyote.http11.InternalAprOutputBuffer.writeToSocket(InternalAprOutputBuffer.java:291) 
     at org.apache.coyote.http11.InternalAprOutputBuffer.writeToSocket(InternalAprOutputBuffer.java:244) 
     at org.apache.coyote.http11.InternalAprOutputBuffer.flushBuffer(InternalAprOutputBuffer.java:213) 
     at org.apache.coyote.http11.AbstractOutputBuffer.flush(AbstractOutputBuffer.java:305) 
     at org.apache.coyote.http11.AbstractHttp11Processor.action(AbstractHttp11Processor.java:765) 
     at org.apache.coyote.Response.action(Response.java:179) 
     at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:349) 
     ... 70 more 

Ich habe wirklich nicht die leiseste Ahnung, auch weil, wenn, in addContent(...) Methode, ich die CreateTable() Methode, die identisch mit der ersten ist mit Ausnahme der Anzahl der Spalten, die Header-Labels, und die Tatsache, die Daten abruft nur durch einen einzigen dto statt aus einer liste von dtos funktioniert alles wunderbar!

Danke!

Antwort

0

Gelöst (etwas zufällig) durch Vervollständigen der createTablePrat(...) Methode (Ich ordnete "// TODO" mit der echten Schleife über die Liste und (wundersamer) funktioniert).
Wer erklärt warum?
Vielleicht ist der "schuldige" table.setHeaderRows(1);, der eine Art Suspension schafft?