---
title: "Servlet attachment"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/68633-servlet-attachment"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "Tryptomine"
published: "2003-02-18T13:28:28.000Z"
updated: "2003-02-18T14:59:17.000Z"
replies: 4
views: 200
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/java/68633-servlet-attachment"
---

# Servlet attachment

## #1 — Tryptomine, 2003-02-18T13:28Z

Jag har en servlet som genererar PDF-filer och returnerar till användaren. Nu är det så att för vissa användare så fungerar det inte utan dom får endast ett blankt fönster i sin browser. 
Någon som kan se nåt fel i koden nedan.

```
    public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException
    {
        HttpSession session = request.getSession(true);
        String strtotalNumberOfBookings = (String)request.getParameter("totalNumberOfBookings");
        int totalNumberOfBookings = Integer.parseInt( strtotalNumberOfBookings );
        PnlPdfDocumentContents[] vos = new PnlPdfDocumentContents[totalNumberOfBookings];
        for (int i = 0; i < totalNumberOfBookings; i++)
        {
            vos[i] =   getPnlPdfMultipleBookinVO( request, i+1  ) ;
        }

        String numberOfLabelsOnOnePage = request.getParameter( "numberOfLabelsOnOnePage").trim();
        if ( numberOfLabelsOnOnePage != null)
        {
            PnlPdfDocumentContents.numberOfLabelsOnOnePage = Integer.parseInt( numberOfLabelsOnOnePage );
        }

        try
        {
            String openPdfInBrowser = (String)request.getParameter("openPdfInBrowser");
            String printForThermo = (String)request.getParameter("printForThermo");
            String filename = (String)request.getParameter("filename");
            if(filename==null || filename.length()<1)
              filename="booking";
            ByteArrayOutputStream baos;
            if(printForThermo!=null && printForThermo.compareTo("YES")==0)
            {
               baos = generatePdfForServlet( vos ,true);
            }
            else
            {
               baos = generatePdfForServlet( vos ,false);
            }
            if ( openPdfInBrowser!= null && openPdfInBrowser.equalsIgnoreCase("1") )
            {
                response.setContentType("application/pdf");
            }
            else
            {
                response.setContentType("application/octet-stream");
                response.setHeader("Content-Disposition", "attachment;filename=\"" + filename + ".pdf" + "\"");
                response.setContentLength(baos.size());
            }

            ServletOutputStream out = response.getOutputStream();
            baos.writeTo(out);
            out.flush();
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
    }
```

Jag har sett i loggarna att vid raden **baos.writeTo(out);** kan det ibland genereras ett exception

```
java.net.SocketException: Connection reset by peer: 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$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:668)
	at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:160)
	at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:523)
	at org.apache.coyote.Response.doWrite(Response.java:518)
	at org.apache.coyote.tomcat4.OutputBuffer.realWriteBytes(OutputBuffer.java:384)
	at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:348)
	at org.apache.coyote.tomcat4.OutputBuffer.writeBytes(OutputBuffer.java:411)
	at org.apache.coyote.tomcat4.OutputBuffer.write(OutputBuffer.java:398)
	at org.apache.coyote.tomcat4.CoyoteOutputStream.write(CoyoteOutputStream.java:110)
	at java.io.ByteArrayOutputStream.writeTo(ByteArrayOutputStream.java:112)
	at net.tradevision.general.pdflabels.PnlPdfMultipleBookingService.doPost(PnlPdfMultipleBookingService.java:177)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:263)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2489)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:413)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:537)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
	at java.lang.Thread.run(Thread.java:536)
```

Permalänk: https://www.webforum.nu/p/68633

## #2 — Lime, 2003-02-18T14:03Z

Vilken version av TC? Får liknande fel när jag kör SSL och ibland vid stora streamar, framför allt när jag kör Netscape eller andra Gecko-baserade browsrar.

/Lime

Permalänk: https://www.webforum.nu/p/953457

## #3 — Tryptomine, 2003-02-18T14:14Z

Jag kör Borland Enterprise Server 5.2 (Är det detta du menar med TC)
Alla användare kör internet explorer \>=5.0.
Använder inte SSL, men det kan vara ganska stora streamar.

Kan det vara så att något timar ut.

Permalänk: https://www.webforum.nu/p/953471

## #4 — Lime, 2003-02-18T14:45Z

Enligt felutskriften så är det något som går fel i JNI-anropet till outputStream. Kan vara i org.apache.coyote.http11.InternalOutputBuffer som är känt för att vara buggig och göra buffer-overflow.

Om man läser loggen så ser man att det är Tomcat som är servlet-engine. Förmodligen den som Borland skickar med. Försök att uppdatera Tomcat till senaste (<http://jakarta.apache.org/tomcat/index.html>). TC 4.1.18 avhjälpte många av mina konstiga servlet och fil-fel.

/Lime

Permalänk: https://www.webforum.nu/p/953506

## #5 — Tryptomine, 2003-02-18T14:59Z

Ok. jag kör 4.1.15
Ska testa att uppgradera.

Permalänk: https://www.webforum.nu/p/953518

---

Tråden på webben: https://www.webforum.nu/amne/java/68633-servlet-attachment
