You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by rbtechno <ba...@gmail.com> on 2007/11/07 15:12:20 UTC

how to create background process


Hi,
          
   I need to implement file download functionality in struts application.
when user submits a filedownload request, FileProcessAction should delegate
the download process to another thread which runs as background process and
return to some other page without waiting for file download completion.How
to do it ?


                       Thanks..
-- 
View this message in context: http://www.nabble.com/how-to-create-background-process-tf4764950.html#a13627829
Sent from the Struts - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: how to create background process

Posted by Wes Wannemacher <we...@wantii.com>.
If this is struts2, take a look at the executeandwait interceptor -

http://struts.apache.org/2.0.11/docs/execute-and-wait-interceptor.html

-W

On 11/7/07, rbtechno <ba...@gmail.com> wrote:
>
>
> Hi,
>
>    I need to implement file download functionality in struts application.
> when user submits a filedownload request, FileProcessAction should delegate
> the download process to another thread which runs as background process and
> return to some other page without waiting for file download completion.How
> to do it ?
>
>
>                        Thanks..
> --
> View this message in context: http://www.nabble.com/how-to-create-background-process-tf4764950.html#a13627829
> Sent from the Struts - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>


-- 
Wesley Wannemacher
President, Head Engineer/Consultant
WanTii, Inc.
http://www.wantii.com

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: how to create background process

Posted by Wes Wannemacher <we...@wantii.com>.
To be honest, I don't think I fully understood the request the first
time I read it. In re-reading the original post, I wonder if you are
looking for functionality similar to the sourceforge download page...

Are you hoping to start the user's browser downloading, but rather
than waiting for the download to complete, present a page to the user
at the same time? If I understand correctly, it is similar to the
experience that I get from sourceforge (and probably a million other
sites with significant downloads). To do that, it is much easier than
you think. Present the page you want the user to see, then redirect
the user to the download directly (* make sure to munge the headers...
stuff like content-disposition: attachment). The user will see the
content you want them to see, and since the redirect goes straight to
a download, the page that's loaded doesn't change.

I haven't taken a close look, but I think that's how it works :)

-Wes

On 11/7/07, Giovanni Azua <gi...@imc.nl> wrote:
> Hi,
>
> Martin Gainty wrote:
> > Encapsulate the long running resource in run() method of a Thread here is a
> > good example
> > http://java.sun.com/developer/technicalArticles/Threads/applet/
> >
> > M--
> >
> I think the Java Servlet specification discourages such misbehavior
> (creating threads explicitly):
>
> Copied from Java Servlet Spec Version 2.5 Page 14:
>
> "A servlet container may place security restrictions on the environment
> in which a servlet
> executes. In a Java Platform, Standard Edition (J2SE, v.1.3 or above) or
> Java Platform,
> Enterprise Edition (Java EE, v.1.3 or above) environment, these
> restrictions should
> be placed using the permission architecture defined by the Java
> platform. For example,
> high-end application servers may limit the creation of a Thread object
> to insure that
> other components of the container are not negatively impacted."
>
> That you could spawn thread within Tomcat does not mean you should.
>
> I think too that executeandwait would be the way to go, the showcase
> includes an example.
>
> To achieve an executeandNOTwait asynchronous effect my wild guess would
> be in this
> case to spawn a hidden action that is not associated with any view so
> the user will not
>  notice it is being executed (giving the asynchronous effect).
> Implicitly you are spawning
> a new thread within the Servlet container but in a safe way. I think the
> executeandwait
> would not apply in this case because the user does not would not want to
> see the
> outcome of the action i.e. wait for it to complete.
>
> For the second case probably the way would be adding to the relevant JSP
> something like:
> <s:action name="fileDownloadAsync" executeResult="false" /> or is there
> a cleaner way in S2.
>
> regards,
> Giovanni
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>


-- 
Wesley Wannemacher
President, Head Engineer/Consultant
WanTii, Inc.
http://www.wantii.com

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: how to create background process

Posted by Giovanni Azua <gi...@imc.nl>.
Hi,

Martin Gainty wrote:
> Encapsulate the long running resource in run() method of a Thread here is a
> good example
> http://java.sun.com/developer/technicalArticles/Threads/applet/
>
> M--
>   
I think the Java Servlet specification discourages such misbehavior 
(creating threads explicitly):

Copied from Java Servlet Spec Version 2.5 Page 14:

"A servlet container may place security restrictions on the environment 
in which a servlet
executes. In a Java Platform, Standard Edition (J2SE, v.1.3 or above) or 
Java Platform,
Enterprise Edition (Java EE, v.1.3 or above) environment, these 
restrictions should
be placed using the permission architecture defined by the Java 
platform. For example,
high-end application servers may limit the creation of a Thread object 
to insure that
other components of the container are not negatively impacted."

That you could spawn thread within Tomcat does not mean you should.

I think too that executeandwait would be the way to go, the showcase 
includes an example.

To achieve an executeandNOTwait asynchronous effect my wild guess would 
be in this
case to spawn a hidden action that is not associated with any view so 
the user will not
 notice it is being executed (giving the asynchronous effect). 
Implicitly you are spawning
a new thread within the Servlet container but in a safe way. I think the 
executeandwait
would not apply in this case because the user does not would not want to 
see the
outcome of the action i.e. wait for it to complete.

For the second case probably the way would be adding to the relevant JSP 
something like:
<s:action name="fileDownloadAsync" executeResult="false" /> or is there 
a cleaner way in S2.

regards,
Giovanni


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org