I would think that, reading from all the responses in this thread,
creating multiple threads inside a servlet container is NOT a bad
thing as long as the developer takes care of business properly -- in
the same way that C++ developers take care to clean up to prevent
memory leaks.

Regards,
-Yves-


On Mon, 06 Dec 2004 22:12:35 -0500, Frank W. Zammetti
<[EMAIL PROTECTED]> wrote:
> Interesting answer Craig...
> 
> I'm sure we've all heard the admonishment that we should not spawn
> threads inside a servlet container, the container should be "handling
> all threading issues".  In fact, I think I even remember something about
> it in the spec, or at least being told there was something about it in
> the spec :)
> 
> I've always felt that "rule" was a bit ambiguous, to say the least...
> 
> I agree that the solution outlined here is the typical pattern, but if
> for no other reason than to foster debate on a potentially interesting
> point, why isn't this contrary to that usual bit of advice about threading?
> 
> The same question arises with daemon threads.  For instance I have one
> app that does some periodic processing, and for various reasons it made
> the most sense for it to be tied to the app instance.  So, when the app
> starts up, I spawn a couple of daemon threads, set them to low priority,
> and they do their thing every few hours.  I've been told this is also a
> Bad Thing(tm) within a servlet container, but I've always felt it really
> wasn't.  Certainly I've observed no ill effects to do such a thing.
> 
> What I'm really getting to here, and I suspect it would be for the
> benefit of a great many people reading this, is the simple question,
> what is actually OK to do with threads in a servlet container and what
> isn't?  Perhaps more importantly, what is the reasoning behind the
> answers?  Any thoughts? (not necessarily just from Craig :) )
> 
> --
> Frank W. Zammetti
> Founder and Chief Software Architect
> Omnytex Technologies
> http://www.omnytex.com
> 
> 
> 
> 
> Craig McClanahan wrote:
> > You're using the typical pattern for this use case (although it's also
> > feasible you could use something like JMS to accomplish the
> > asynchronicity).  The most important thing to do, though, is to ensure
> > that you eventually kill the thread no matter what actually happens,
> > so that you don't have something needlessly consuming resources for
> > the remainder of the lifetime of your server instance.
> >
> > Craig
> >
> >
> >
> > On Tue, 7 Dec 2004 10:50:06 +0800, Yves Sy <[EMAIL PROTECTED]> wrote:
> >
> >>Here's a follow-up question:
> >>
> >>I remember creating a thread in one of my Action classes because I
> >>needed to show a "Wait while your request is being processed..." page.
> >>
> >>The flow goes something like:
> >>    1. the MAIN thread returns an ActionForward right away that
> >>contains the "processing" page;
> >>    2. the NEW thread I created goes ahead and makes the back-end call
> >>that takes a considerable amount of time to process;
> >>    3. After NEW thread returns with the results, it sets a flag in
> >>the session that it's done with the processing;
> >>    4. Meanwhile, the processing page keeps refreshing itself and
> >>sending execution to an action which checks for the session flag set
> >>in #3;
> >>     5. When it finally finds the session flag, it forwards to the results 
> >> page.
> >>
> >>Its working fine for me. No weird behavior on Weblogic or SAP WAS.
> >>Although now I'm curious: Is there a better way to approach this
> >>problem?
> >>
> >>Regards,
> >>-Yves-
> >>
> >>On Mon, 6 Dec 2004 15:03:09 -0600, [EMAIL PROTECTED]
> >>
> >>
> >><[EMAIL PROTECTED]> wrote:
> >>
> >>>
> >>>As has been noted by others, JMS would be the better solution for an
> >>>asynchronous 'process'.
> >>>
> >>>But, if you have to use threads then it is probably a better approach to
> >>>create a thread pool at appliction initialization and have the actions use
> >>>those threads via a common synchronized data structure (hidden behind an
> >>>interface).
> >>>
> >>>Ensure that you have a good unique context for correlating the request and
> >>>response (not to be confused with the http req/resp)
> >>>
> >>>depending upon the volume of traffic you should be able to get away with a
> >>>small number of threads. The actual count can be controlled via an extenal
> >>>property.
> >>>
> >>>good luck.
> >>>
> >>>JC
> >>>
> >>>                      "Jim Barrows"
> >>>                      <[EMAIL PROTECTED]        To:       "Struts Users 
> >>> Mailing List" <[EMAIL PROTECTED]>,
> >>>                      m>                        [EMAIL PROTECTED]
> >>>                                               cc:
> >>>                      12/06/2004 02:52         Subject:  RE: [OT]Threads 
> >>> and Servlets Question
> >>>
> >>>
> >>>                      PM
> >>>                      Please respond to
> >>>                      "Struts Users
> >>>                      Mailing List"
> >>>
> >>>
> >>>>-----Original Message-----
> >>>>From: bryan [mailto:[EMAIL PROTECTED]
> >>>>Sent: Monday, December 06, 2004 1:15 PM
> >>>>To: Struts Users Mailing List
> >>>>Subject: Re: [OT]Threads and Servlets Question
> >>>>
> >>>>
> >>>>threads are also a finite resource  ( particularly on Linux ).
> >>>>
> >>>>--b
> >>>>
> >>>>
> >>>>On Mon, 6 Dec 2004 21:13:57 +0100, bryan <[EMAIL PROTECTED]> wrote:
> >>>>
> >>>>>because you should use a message driven bean to do
> >>>>
> >>>>something like that.
> >>>>
> >>>>>--b
> >>>
> >>>If the brass monkeys upstairs would let me, I would.  However, they won't,
> >>>and I've used up all of my "oops I did it anyway" cards for a while.  So,
> >>>while helpful, doesn't really answer my question.
> >>>
> >>>As for a finite resource...... as someone else said so is memory, disk
> >>>space, CPU, etc etc.  As for being on linux.... I've done some pretty nasty
> >>>multi-threading, in java, on linux and haven't hit that ceiling yet...
> >>>ymmmv.
> >>>
> >>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>On Mon, 6 Dec 2004 11:48:15 -0700, Jim Barrows
> >>>>
> >>>><[EMAIL PROTECTED]> wrote:
> >>>>
> >>>>>>Okay... I know I've read this somewhere, but can't remember.
> >>>>>>Why is it recommended you NOT start a thread inside a
> >>>>
> >>>>servlet, which would translate to "Why is it a bad idea to
> >>>>start a thread inside an action?".
> >>>>
> >>>>>>And, can you point me at some documentation?
> >>>>>>
> >>>>>>
> >>>>
> >>>>---------------------------------------------------------------------
> >>>>
> >>>>>>To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>>>>>For additional commands, e-mail: [EMAIL PROTECTED]
> >>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>>>--
> >>>>>http://www.revoltingdigits.com
> >>>>>https://jestate.dev.java.net
> >>>>>
> >>>>
> >>>>
> >>>>--
> >>>>http://www.revoltingdigits.com
> >>>>https://jestate.dev.java.net
> >>>>
> >>>>---------------------------------------------------------------------
> >>>>To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>>>For additional commands, e-mail: [EMAIL PROTECTED]
> >>>>
> >>>>
> >>>
> >>>---------------------------------------------------------------------
> >>>To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>>For additional commands, e-mail: [EMAIL PROTECTED]
> >>>
> >>>
> >>>------------------------------------------------------------------------------
> >>>**********
> >>>The information contained in this communication is confidential, private, 
> >>>proprietary, or otherwise privileged and is intended only for the use of 
> >>>the addressee.  Unauthorized use, disclosure, distribution or copying is 
> >>>strictly prohibited and may be unlawful.  If you have received this 
> >>>communication in error, please notify the sender immediately at 
> >>>(312)653-6000 in Illinois; (972)766-6900 in Texas; or (800)835-8699 in New 
> >>>Mexico.
> >>>**********
> >>>==============================================================================
> >>>
> >>>
> >>>
> >>>
> >>>---------------------------------------------------------------------
> >>>To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>>For additional commands, e-mail: [EMAIL PROTECTED]
> >>>
> >>>
> >>
> >>
> >>--
> >>A bus station is where a bus stops. A train station is where a train
> >>stops. On my desk I have a work station...
> >>
> >>
> >>
> >>---------------------------------------------------------------------
> >>To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> >>
> >
> > 
> > ---------------------------------------------------------------------
> 
> 
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> >
> >
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 


-- 
A bus station is where a bus stops. A train station is where a train
stops. On my desk I have a work station...

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to