You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by Christopher Cain <cc...@mhsoftware.com> on 2001/08/06 19:17:16 UTC
Catalina Startup Hook
I need a quick jumpstart on how to hook my password prompter into the
Catalina startup process. I assume that I shouldn't implement it as a
Valve, as those have to do with the Request/Response chain. The
<Connector> level in server.xml appears to be the appropriate level in
the hierarchy, but it's not really a connecter per se, since its
lifecycle is complete before the startup process even finishes (i.e. it
doesn't need to sit in the service and pass requests off to the engine).
So is there a more generic "module" architecture in place that I should
implement? I just need a quick, high-level idea of what internal
component to use and how to implement that component in the server.xml
config.
TIA
Regards,
Christopher
Re: Catalina Startup Hook (actually, both camps should read this
:-)
Posted by Jon Stevens <jo...@latchkey.com>.
on 8/6/01 10:31 PM, "Christopher Cain" <cc...@mhsoftware.com> wrote:
> But I have to say, from
> someone without a great deal of personal investment in either tree in
> particular, ALL of you people should be damn proud.
Wouldn't it be amazing if they had just worked together though?
All that great talent working on two different (yet the same!) things seems
like such a shame to me! :-)
-jon
Re: Catalina Startup Hook (actually, both camps should read this :-)
Posted by Christopher Cain <cc...@mhsoftware.com>.
Quoting "Craig R. McClanahan" <cr...@apache.org>:
>
> Valves are designed for request processing, not component startup and
> shutdown. See below for an alternative suggestion.
Yep, that's the general conslusion I came to in looking over the codebase.
Cool, at least I know I can still RTFS and get it right (on occasion) :-)
> The simplest approach to your particular issue would be to create a
> class that implements the org.apache.catalina.LifecycleListener interface,
> and then nest a <Listener> element inside the SSL-based <Connector>
> element that creates an instance of that listener, associated with the
> correspondeing connector.
>
> Now, the lifecycleEvent() method will be fired when this Connector is
> started up (and when it is shut down), so you can interject your
> dialog with the user at that point. Just look for an event of type
> Lifecycle.START_EVENT.
Exactly what I needed to know. Thanks!
> Note that the <Lifecycle> element, like most elements in server.xml,
> can dynamically map the XML attributes specified in the <Listener> element
> to corresponding bean properties on your LifecycleListener class. This
> is tremendously useful for configuring the behavior of your listener.
> The only required attribute is "className", which specifies the fully
> qualified classname of your class itself.
>
> It won't help for this particular use case, but lifecycle listeners
> can also be nested inside <Engine>, <Host>, and <Context> elements,
> depending on what kind of startup and shutdown events you care about.
WARNING: KODAK MOMENT TO FOLLOW ...
Man ... after more than a year, I am FINALLY starting to understand why the
whole 3.x vs 4.0 war was so fiercely waged. In the process of implementing this
little module of mine for both trees, I have to say that they are BOTH, really,
damn clever solutions. I mean, I'm sure the resident experts in each camp each
have their little nitpicks with the other codebase. But I have to say, from
someone without a great deal of personal investment in either tree in
particular, ALL of you people should be damn proud. Costin (et. al) with his
hooks and interceptors ... Craig (et. al) with his valves and listeners ... you
guys and your respective posses have BOTH designed an incredible product. The
more I dig into both trees, the more impressed I am with both. As far as I'm
concerned, personally, arguing over which is the superior design would be alot
like arguing over whether to take the Porche or the Jag out for a spin. People
might have their slight personal preferences, but at the end of the day, your
driving a DAMN fine machine either way.
Anyway, I'm not trying to stir up anything at all, and I DEFINITELY don't want
to drag the 3 vs 4 thing back out of the closet. (PLEEEEASE, if there are any
list newbies reading, do NOT reply to this with some kind of feature comparison
or other opinion on which is better ... you'll get me in all sorts of trouble
in here :-) I just wanted to say what I didn't have the knowledge or experience
to say at the time: the greatest testament to the entire Tomcat project is the
fact that we were fortunate enough to be in the akward position of deciding
between these two codebases. Because I GUARANTEE you, any strictly-proprietary
software vendor on the planet would absolutely SALIVATE if given the chance to
have originally based a closed, commercial product on either one of these two
designs. You could kick the crap out the competition with either of them (the
other codebase excluded, of course ;-) ... they're that good.
Anyway, that's just how I feel, and I look forward to continuing work in both
(easy for me to say, I like to develop plugins =)
Regards,
Christopher
Re: Catalina Startup Hook
Posted by "Craig R. McClanahan" <cr...@apache.org>.
On Mon, 6 Aug 2001, Christopher Cain wrote:
> I need a quick jumpstart on how to hook my password prompter into the
> Catalina startup process. I assume that I shouldn't implement it as a
> Valve, as those have to do with the Request/Response chain. The
> <Connector> level in server.xml appears to be the appropriate level in
> the hierarchy, but it's not really a connecter per se, since its
> lifecycle is complete before the startup process even finishes (i.e. it
> doesn't need to sit in the service and pass requests off to the engine).
>
Valves are designed for request processing, not component startup and
shutdown. See below for an alternative suggestion.
> So is there a more generic "module" architecture in place that I should
> implement? I just need a quick, high-level idea of what internal
> component to use and how to implement that component in the server.xml
> config.
>
The simplest approach to your particular issue would be to create a class
that implements the org.apache.catalina.LifecycleListener interface, and
then nest a <Listener> element inside the SSL-based <Connector> element
that creates an instance of that listener, associated with the
correspondeing connector.
Now, the lifecycleEvent() method will be fired when this Connector is
started up (and when it is shut down), so you can interject your dialog
with the user at that point. Just look for an event of type
Lifecycle.START_EVENT.
Note that the <Lifecycle> element, like most elements in server.xml, can
dynamically map the XML attributes specified in the <Listener> element to
corresponding bean properties on your LifecycleListener class. This is
tremendously useful for configuring the behavior of your listener. The
only required attribute is "className", which specifies the fully
qualified classname of your class itself.
It won't help for this particular use case, but lifecycle listeners can
also be nested inside <Engine>, <Host>, and <Context> elements, depending
on what kind of startup and shutdown events you care about.
> TIA
>
> Regards,
>
> Christopher
>
Craig