You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avalon.apache.org by Leo Simons <le...@apache.org> on 2003/11/07 13:08:23 UTC

Re: semantic conflict

have been thinking about this a lot. Still no obvious conclusion.

Stephen McConnell wrote:
> a strict 
> framework spec interpretation of poolable is that an object returned to 
> the pool is an object that must be destroyed and that a new object must 
> be instantiated to repopulate the pool.  Any other assumption 
> contradicts the framework spec.  An extension does not change this 
> conclusion because a pooled lifestyle handler must function predictably 
> independently of n possible extensions invoked during the release phase.

indeed.

> (a) pooled objects in framework are broken, or
> (b) pooled objects cannot be container independent, or
> (c) a common container side pooled object model is required

IMHO, (c). "Manual pooling" is painful; it results in ugly consumer 
components and less-than-transparent dependency graphs.

> How to resolve this?  IMO the key point is to recognize that there is a 
> service dependency assumption that can be declared by a consumer that 
> reflect awareness of pooled semantics.

indeed. Precisely the ugly thing about ServiceManager.release() is that 
consumer components must call it while being otherwise unaware of any 
pooling. It is (has always been) ugly.

> @avalon.dependency type="Widget" pool-aware="true"

ugly! :D

> provider states: I required/do-not-require active release
> consumer states: I provide/do-not-provide active release
> container: handles resolution

it would be nice if the consumer part of this functionality could be 
encapsulated in a utility or (shiver) abstract class of some kind. The 
ability to (nearly) transparently switch from singletons to pooling (for 
example) is something that's quite powerful and used to great effect in 
ecm/fortress applications.

I think the right answer to this though question is yet to be found.

- LSD



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@avalon.apache.org
For additional commands, e-mail: dev-help@avalon.apache.org