I'm implementing a Manager (session management) that stores sessions on shared
servers (that is, a distributed manager, but not the default one that comes
with tomcat). A key difference between the implementation that I'm working on
and the ClusteredManager is that the entire session is distributed when it
changes, rather than sending individual parameters around over the network.
The problem that I'm having is that the Manager needs to be notified when the
request has finished with the session. I'm aware that I can create a
ServletRequestListener, and I think that the requestDestroyed method would be a
reasonable time for me to be telling the manager that it should distribute the
session. However, I can't for the life of me figure out how to get a reference
to the Manager from a ServletRequestListener.
I've tried:
- having the ServletRequestListener also be a ServletContextListener, but I
can't navigate to the manager from there.
- finding the Manager through the session, but that's a StandardSessionFacade,
which doesn't reveal the manager.
- having the ServletRequestListener also be a ContainerListener, but I can't
make the same instance of the Listener be registered as both (since
registerting a ServletRequestListener through the StandardContext doesn't allow
me to register an object, I can only tell it what class to use).
Any suggestions? Either for how I can have my ServletRequestListener get a
reference to the Manager, or for other strategies for knowing when the Request
is finished with the Session so that I can distribute it.
Thanks.
Nolan