cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stefano Mazzocchi <>
Subject Re: AW: single instance per context on avalon components
Date Mon, 01 Oct 2001 11:16:18 GMT
Carsten Ziegeler wrote:
> This is actually I feature I am looking for since weeks, but had never
> time to finish it....
> There is of course the ThreadSafe interface from Avalon, but then
> you have only one single instance in the whole system. That's not
> suitable for many cases.
> I would like to add a Cocoon-specific marker interface, similar
> to the SitemapModelComponent  interface (but a different name)
> >>>
> public interface RequestModelComponent extends Component {
>     /**
>      * Set the <code>SourceResolver</code>, objectModel <code>Map</code>,
>      * the source and sitemap <code>Parameters</code> used to process the
> request.
>      */
>     void setup(SourceResolver resolver, Map objectModel) throws
> ProcessingException;
> }
> <<<<
> The behaviour for this would be:
> - The first time during a request processing a component marked with
>   this interface is looked up, a new instance is created (or got from
>   the pool) and the setup method is called. This object is stored
>   somewhere so that the ComponentManager has access to it for later
>   requests.
> - The second, third.. time during the same request this component is
>   looked up, it is get from the store and the setup() method is
>   not looked up
> - Every time a release is called on this object, nothing really happens
> - When the request processing is finished, the ComponentManager
>   must really release all stored objects.
> So actually objects marked in this way are more or less ThreadSafe
> but per request exists a different instance.

Hmmm, not sure I understand the need for such a behavior. I mean: if you
don't call setup() in subsequent requests, wouldn't you get into an
inconsistent state for the environment variables?

Can you make an example of use, I'm probably missing your point.
> I didn't look much more in the Avalon code, but I thought, implementing
> an own ComponentManager which does exactly this behaviour in the
> lookup and release methods would be simply enough.

Yes, in case we need cocoon-specific behavior, extending avalon's
component manager is the way to go, rather than forcing new behaviors up
into avalong foodchain.

Stefano Mazzocchi      One must still have chaos in oneself to be
                          able to give birth to a dancing star.
<>                             Friedrich Nietzsche

To unsubscribe, e-mail:
For additional commands, email:

View raw message