Cool! That is exactly what I needed!  I was getting miffed because
valves got the nice catalina request object while InstanceEvent had to
deal with the dumbed down HttpRequest.  Now onto a design question:

I am implementing a JdbcSessionManager for dealing with non-sticky
clusters.  We wish to use the DB to store all of our session data when
it is not in use.  Thanks to Craig's help I was able to figure out how
to do the updating of the session data in an InstanceEventListener that
catches the AFTER_SERVICE_EVENT.  In talking to Filip Hank about his
Clustered session manager I was also able to do the database updates in
a valve.  Which way is preferable?  In the InstanceEvent I can just
filter out all queries that make this true:
"default".equals(event.getServlet().getServletConfig().getServletName())
.  Filip used the file extensions to create an exclusion list.

Other notes:
I have had to create my own JdbcSession object instead of subclassing
StandardSession because the attributes HashMap is private and I need
access to it.  (I think)  I am serializing the HashMap and storing only
that in its own column.  My other columns are expire_time,
creation_time, app_name, and session_id.  I am currently limited to
sessions with 8k of data because of the DB limits on VARBINARY but that
can change at a later date.

--Angus

> -----Original Message-----
> From: Craig R. McClanahan [mailto:[EMAIL PROTECTED] 
> Sent: Wednesday, July 02, 2003 11:50 PM
> On Wed, 2 Jul 2003, Angus Mezick wrote:
> 
> > Date: Wed, 2 Jul 2003 15:08:33 -0400
> > From: Angus Mezick <[EMAIL PROTECTED]>
> > Does anyone know how to access the container object from an instance
> > event?  Are there any specs that say an instance event can have no
> > internal access to the server?
> >
> 
> I presume you're talking about 
> org.apache.catalina.InstanceEvent, right?
> If so, the "wrapper" property that is accessible via 
> getWrapper() is the
> org.apache.catalina.Container instance for this particular 
> servlet.  If
> you want the Context element for the webapp, for example, you'd say
> something like:
> 
>   Context context = (Context) event.getWrapper().getParent();
> 
> or, to get the Host for this virtual host:
> 
>   Host host = (Host) event.getWrapper().getParent().getParent();
> 
> and so on.
> 
> > Sorry for the cross post but I am deep into the internals 
> of tomcat here
> > and I don't know which list is appropriate.  The list with "how do I
> > change the default port" type q's or the one that debates 
> how features
> > should be implemented.
> >
> 
> The TOMCAT-USER list probably won't have many folks that 
> understand the
> internals well enough to answer a question like this :-).
> 
> > Angus Mezick
> > GuideStar - Philanthropic Research Inc.
> Craig McClanahan

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

Reply via email to