Ryan Shaw wrote:
> Hello,
>
> I have been looking at Berin's ContainerManager stuff
> in the Excalibur scratchpad. It looks pretty cool but
> I want to make sure I understand how it is intended to
> be used.
>
> Say I want to use Framework/Excalibur from a servlet.
> So I create a subclass of AbstractContainer called
> ServletContextContainer. Then my initialization servlet
> creates a new ContainerManager, with all the parameters
> specified (including the classname of my new
> ServletContextContainer) and places the Container
> Manager in the ServletContext.
So far so good!
>
> Then my other servlets can get the ContainerManager
> out of the ServletContext and use it...but how? It
> doesn't seem to expose any methods that would give
> my servlets access to, say, the container's component
> manager...
>
> Can anyone enlighten me?
When designing it, I had in mind that the Container would
have a special interface that you would call to handle whatever
request you needed. For instance, In Cocoon, they have an inteface
which the Cocoon Component and all Sitemaps implement called
Processor:
interface Processor
{
process( Environment env, String uri ); // an external request, delegates to the
full method
process( Environment env, String uri, boolean isRequestInternal );
}
This would allow you to use it like this:
void service( ServletRequest request, ServletResponse response )
{
Environment env = new Environment( m_servletContext, request, response );
Processor proc = (Processor) m_containerManager.getContainer();
proc.process( env, request.getRequestURI() );
}
As you can see, this greatly simplifies the code that is currently in
CocoonServlet's service method. I left out the code used for determining
the length of time a request took to process, ensuring that the ContextClassLoader
is set, and other Environment management code.
I did consider making the Container's ComponentManager available, but that is
a clear cut example of Subversion of Control. The Container's ComponentManager
is for that level of abstraction and below. The parent ComponentManager (that
of the ContainerManager) is at a peer level with the Servlet, so is able to
be made available to the Servlet.
--
"They that give up essential liberty to obtain a little temporary safety
deserve neither liberty nor safety."
- Benjamin Franklin
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>