If your need daemon threads to perform some type of cleanup. You'll need to
- Create a non-deamon thread for the sole purpose of ensuring the JVM stays up
- Create a LifeCycleListener (or other appropriate listener) to listen for tomcat startup and shutdown events
- On shutdown, you'll need a synching method to kill the non-daemon thread once it knows all the daemon threads are done doing their thing


-Tim

[EMAIL PROTECTED] wrote:
Okay, I see that point. Since the worker threads who perform the very work to
respond a request are deamons, there seems to be a hard and unconfigured timeout
effective in TC406.

TC403 and TC406 show different behaviors when stopping. Both would require
certain application coding, but which one is the correct  behavior, that
application programmers should rely on?





Tim Funk <[EMAIL PROTECTED]>
04.06.2003 12:03

Bitte antworten an "Tomcat Users List" <[EMAIL PROTECTED]>
An:     Tomcat Users List <[EMAIL PROTECTED]>
Kopie:
Thema:  Re: Different shutdown behavior of httpConnector in TC403 (graceful)
        and TC406 (reckless)


There isn't any code (that I know of) in 4.0.6 that performs the kill.


The JVM will terminate if "only daemon threads are running". If the daemon
threads need to perform more work during a shutdown, you need to make sure
one of them is non-daemon.

-Tim

[EMAIL PROTECTED] wrote:

When shutdown.sh is launched, TC performs a stop on all HttpConnectors, which
themselves will stop their HttpProcessors.

It seems to that - while TC 403 waits "gracefully" for the work on a request

to


be finished (even forever) - TC 406 will wait 5 secs only and then shutdown
without
any respect to the work done in the processors background threads.

I am afraid both ways can have undesired consequences. TC 403 will sometimes
simply resist to shut down,  while in a TC406 shutdown the work done in daemon
threads will be interrupted without regards to the current states of the
threads.

The behavior of TC 406 is fine when there are only requests that can be

handled


fast. On the other hand, with large transactions I would prefer the behavior

of


TC 403 and pervent the requests from lasting too long by implementing
configurable timeouts myself in the application code. Otherwise - or as it

seems


to be implemented in TC406 - we would risk to interrupt vulnerable operations,
aren't we?

So, my primary question is this one: Did I overlook a point, in particular: Is
there a way to configure the shutdown behavior in TC 406 top wait for the
background threads to finish?

There was discussion on that topic last year (
http://marc.theaimsgroup.com/?t=104454190600001&r=1&w=2),
but I do not see where it had practical consequences in the code.

Thanks

Frank



---------------------------------------------------------------------
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]




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



Reply via email to