[EMAIL PROTECTED] wrote: > Hello, I'm new to the list. Hello to every one. Sorry if I'm posting this > message in the wrong place. If so please advise me to fix it.
>From a quick scan of your e-mail it looks like you have a valid bug here. To make sure this doesn't get lost, please add it to the Tomcat issue tracker at http://issues.apache.org/bugzilla Cheers, Mark > > I was asked to make a PDF functionality called Fast Web View work in a > Tomcat application. In my initial tests, as I will describe, it did not > worked. > > I started downloading the version 6.0.18 and after that I downloaded the > trunk SVN branch and compiled every thing (comment: a hard job at the > first time, ah? sorry, I had many web proxy issues), > > I wrote a small HTML just for testing purpose. The "index.html" file is > something like: > > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" " > http://www.w3.org/TR/html4/strict.dtd";> > <html> > <head> > <meta http-equiv="Accept-Ranges" content="bytes"> > </head> > <body> > <table border="1" align="center"> > <tr> <td align='center' valign='middle'> > <a href='FIRST_FAST_WEB_VIEW_READY.PDF' > type='application/pdf'>FIRST_FAST_WEB_VIEW_READY.PDF</a> > </td> > <td align='center' valign='middle'>32.09 MB </td> > </tr> > <tr> <td align='center' valign='middle'> > <a href='SECOND_FAST_WEB_VIEW_READY.PDF' > type='application/pdf'>SECOND_FAST_WEB_VIEW_READY.PDF</a> > </td> > <td align='center' valign='middle'>41.72 MB </td> > </tr> > <tr> <td align='center' valign='middle'> > <a href='NTH_FAST_WEB_VIEW_READY.PDF' > type='application/pdf'>NTH_FAST_WEB_VIEW_READY.PDF</a> > </td> > <td align='center' valign='middle'>25.83 MB </td> > </tr> > </table> > </body> > </html> > > I just created a folder in the webapps folder named PDFs and placed > everything there. > > When I started Tomcat, opened the page and click on the first PDF link (on > other link the result was the same) with the address > http://localhost:8080/PDFs/, I got the following result: > - The file was found by Tomcat > - Adobe Reader works properlly requesting a "byte served" content (I also > configured the property useAcceptRanges on the web.xml file) > - Tomcat returned a header response 200 OK and some data > - Adobe requests a partial content with a few range descriptors like: > 500-999, 7000-7999 (I rounded the sample here) > - Tomcat send a response (http 206) multipart/byterange for the above > ranges > - Adobe Reader locks and don't ask any more ranges > - The browser also locks and after a long wait time it returns a error > message of problems on file. > > I started them analysing the response stream with an http protocol > analyser plug-in for the browser. > > In the RFC2616 I noted that the response should be as the below sample > cutted from the RFC2616: > > HTTP/1.1 206 Partial Content > Date: Wed, 15 Nov 1995 06:25:24 GMT > Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT > Content-type: multipart/byteranges; boundary=THIS_STRING_SEPARATES > > --THIS_STRING_SEPARATES > Content-type: application/pdf > Content-range: bytes 500-999/8000 > > ...the first range... > --THIS_STRING_SEPARATES > Content-type: application/pdf > Content-range: bytes 7000-7999/8000 > > ...the second range > --THIS_STRING_SEPARATES-- > > But I noted that Tomcat was returning the following stream: > > HTTP/1.1 206 Partial Content > Date: Wed, 15 Nov 1995 06:25:24 GMT > Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT > Content-type: multipart/byteranges; boundary=THIS_STRING_SEPARATES > > --THIS_STRING_SEPARATES > Content-range: bytes 500-999/8000 > > > ...the first range... > --THIS_STRING_SEPARATES > Content-range: bytes 7000-7999/8000 > > > ...the second range > --THIS_STRING_SEPARATES-- > > > Please note the lack of the "Content-type: application/pdf" message and > additional line break from the RFC sample and the Tomcat stream. > > After some research I found the DefaultServlet Class where the stream for > partial content and multi range requests are served. > On Tomcat 6.0 at java\org\apache\catalina\servlets and on Tomcat 5.5 at > container\catalina\src\share\org\apache\catalina\servlets > > The first thing that happens to make it work was the add of > "useAcceptRanges" on the config file (web.xml) and the fix for it on > Tomcat 6.0.x class source code on the SVN repository (thankyou). It really > made difference because the HTTP header response must have "Accept-Ranges: > bytes" string to allow clients make byte requests (at least Adobe Reader). > > The second thing is in the "copy" methods. There is a check for the > "contentType" variable and for any reason the method that try to retrieve > its value, before the call for "copy" method, is always returning null. > So, in the if statement within the "copy" methods: > > if (contentType != null) > ostream.println("Content-Type: " + contentType); > > and > > if (contentType != null) > writer.println("Content-type: " + contentType); > > I added a "forced" result of : > > if (contentType != null) > ostream.println("Content-type: " + contentType); > else > ostream.println("Content-type: application/pdf"); > > and > > if (contentType != null) > writer.println("Content-type: " + contentType); > else > writer.println("Content-type: application/pdf"); > > In my environment it is sufficient because my big deal is with PDF files, > but I know that it is not the most elegant solution neither can be a > definitive solution. > > As I am not a java programmer, I ask for the list to handle this issue. > If it sound completely nuts please forgive me. > I'm available to help with tests for this issue. Please contact me through > the list or directly. > > Best regards to all. > Sincerely, > > Antonio Vitor Elias Swaid Jr > Technical Publications Development > EMBRAER - São José dos Campos > Fone: +55 12 3927-8364 Fax: +55 12 3927-3132 > This message is intended solely for the use of its addressee and may > contain privileged or confidential information. If you are not the > addressee you should not distribute, copy or file this message. In this > case, please notify the sender and destroy its contents immediately. > Esta mensagem é para uso exclusivo de seu destinatário e pode conter > informações privilegiadas e confidenciais. Se você não é o destinatário > não deve distribuir, copiar ou arquivar a mensagem. Neste caso, por favor, > notifique o remetente da mesma e destrua imediatamente a mensagem. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]