Hello,

At

http://jakarta.apache.org/tomcat/jakarta-tomcat/src/doc/mod_jk-howto.html

I found the following joke:

> Q. Whenever I restart Tomcat, Apache locks up!
> 
> A. The Ajp13 protocol keeps an open socket between Tomcat and Apache.
>    When you restart Tomcat, you need to restart Apache as well. 

What use is there of replication, if you have to restart the load balancer
when one of the workers goes away?? BTW, I tried restarting Tomcat without
restarting Apache and luckily it worked fine. So what is this scary Q/A
all about?

However, this is not the primary issue I would like to query about.
What concerns me more is how to restart the servlet engine in a way
that is transparent to users. If I am injecting new code, I would like
the user to perhaps see a short delay between requests, but definitely
not an "Internal server error" message (I assume having persistent
sessions, so these are not a problem). I guess this task of delaying
a request until a servlet engine becomes ready -- instead of spitting
out an error -- should be up to mod_jk. Does anyone know whether it
can be turned on somehow or whether it would be a big deal to implement
something like that myself? I admit to have little experience with
C network programming...

With some more support from mod_jk, application upgrades could be done
even more transparently. If I have 2 Tomcat instances, I could set up
mod_jk to do load balancing and then 1) stop one instance -- mod_jk
transparently fails over to the second one 2) upgrade this now stopped
instance 3) restart it with the updated code, mod_jk starts feeding
it with requests again 4) stop the second instance -- mod_jk now fails
over to the first, already updated one 5) upgrade then restart the
second instance. A user should not notice any delay -- there is always
one instance running.

Is this setup possible now? In particular, will mod_jk transparently
fail over and will it notice the instance once it comes back after
upgrade?

Thanks in advance -
JPL

Reply via email to