tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Howard W. Smith, Jr." <smithh032...@gmail.com>
Subject Re: Can ClientAbortException be circumvented?
Date Wed, 27 Mar 2013 11:07:38 GMT
On Mon, Mar 25, 2013 at 11:58 AM, Howard W. Smith, Jr. <
smithh032772@gmail.com> wrote:

> On Mon, Mar 25, 2013 at 11:54 AM, Howard W. Smith, Jr. <
> smithh032772@gmail.com> wrote:
>
>> On Mon, Mar 25, 2013 at 9:00 AM, Thad Humphries <thad.humphries@gmail.com
>> > wrote:
>>
>>> On Sun, Mar 24, 2013 at 4:46 PM, Konstantin Kolinko
>>> <knst.kolinko@gmail.com>wrote:
>>>
>>> > 2013/3/25 Thad Humphries <thad.humphries@gmail.com>:
>>> > > I have a web-app that uses a servlet for downloading files from a
>>> > > repository--PDF, Office, images, zip, etc. It works with desktop
>>> > > browsers--IE, Firefox, Chrome, and Safari--on their various
>>> platforms. It
>>> > > also works fine with Firefox from Android (2.3 and 4.x tested).
>>> However
>>> > > when I try with Android's default WebKit browser, the servlet fails
>>> > > immediately with org.apache.catalina.connector.ClientAbortException
>>> (so
>>> > > says the stderr log).
>>> >
>>> > 1. Is this issue specific to some kind of files, or it occurs with all
>>> of
>>> > them?
>>> >
>>>
>>> All of them--PDF, XLS, DOC, DOCX, TIFF, ZIP, etc. Every file type I've
>>> tried.
>>>
>>
>> Hmmm, interesting thread (and responses so far). I think I am aware of
>> this 'Android default Webkit browser' you are referring to. I always avoid
>> using it, and download Google Chrome from Google Play store to my Android
>> devices, and I don't think I ever tested my web app with the default
>> browser installed on Android devices.
>>
>> I have downloaded PDF files (generated in-memory) from my java/JSF web
>> app to Android device, and I have never seen this ClientAbortException. my
>> web app also has at least one iPad enduser (which has Google Chrome
>> installed on iPad). I am unaware of his experience and I don't think he
>> downloads PDF files from web app to his iPad, but I am quite confident that
>> it works or will work. :)
>>
>> > >
>>>
>> > > I suspect this is a problem with mobile WebKit, and that circumventing
>>> > the
>>> > > abort might be a "bad thing" even if it's possible. However I
>>> thought I'd
>>> > > inquire here if there is a Tomcat way around it. If not, it seems my
>>> > > alternatives are (1) use Java Mail to mail the user the file, since
>>> mail
>>> > > apps open their attachments; and (2) write iOS and Android apps file
>>> > query
>>> > > and downloading. Neither prospect thrills me.
>>>
>>
>> Okay, i just tested this with/in my web app on my Google Nexus 7
>> (android, of course). I offer Download, Print, and View hyperlinks within
>> the web app. Mind you, this is PrimeFaces xhtml below.
>>
>> ---download---
>> <p:commandLink value="Download" ajax="false"
>>
>>  actionListener="#{pf_ordersController.refreshContractsToDownload()}">
>>     <p:fileDownload value="#{contractToDownload.file}"/>
>> </p:commandLink>
>>
>> Test and results:
>>
>> clicked Download button, PDF downloaded to Google Nexus 7 (Google Chrome
>> browser, of course), showed up in notifications, instead of PDF Viewer app,
>> I selected to open the PDF document in Adobe Acrobat (app that was
>> downloaded from Google Play).
>>
>> ---view---
>> <h:commandLink value="View" target="_blank"
>>
>>  actionListener="#{pf_ordersController.refreshContractsToDownload()}">
>>     <p:fileDownload value="#{contractToDownload.file}"
>>                     contentDisposition="inline"/>
>> </h:commandLink>
>>
>> Test and results:
>>
>> clicked View button, I saw another web page tab open rather quickly in
>> the Google Chrome browser on Google Nexus 7, and then the new tab closed
>> immediately, and then I saw the 'Starting download' toast (at bottom of
>> Google Nexus 7), but I didn't see the file in notifications or downloads,
>> and I didn't see any exceptions in my TomEE/tomcat7 logs.
>>
>> With that said, maybe I just duplicated this issue/exception that you
>> have been experiencing. If I'm not mistaking, PrimeFaces is using the
>> servlet solution for file downloads.
>>
>> So, based on this test of mine, it is best to offer a 'download'
>> hyperlink 'only' on mobile devices as I am already detecting mobile devices
>> when they login to the web app.
>>
>> Thanks for this topic. now I know what i 'need' to do. :)
>>
>>
> Forgot to mention; i would definitely provide an option for files to be
> emailed to endusers. my web app has that option as well as it is more
> reliable.
>
> i have found that endusers do a lot of multi-tasking on mobile devices,
> and mobile browsers seem to lose connection when they go to some other app.
> i may not be describing this correctly, but I have noticed this behavior,
> myself.
>
>
UPDATE:

1. Reached out to 2 mobile endusers of my web app that does file downloads

2. iPad enduser says that the View commandLink
(contentDisposition="inline") works 'always', he has no issues

3. Android enduser informed me that the View commandLink
(contentDisposition="inline") 'does not always' work, sometimes it works,
sometimes it does

4. Per the test results, this email thread, and what my endusers want, i
just made a change to 'only' provide the View commandLink
(contentDisposition="inline") to iPad (and nonmobile devices), and the
Download commandlink is provided to Android endusers

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message