Hi Alex, That looks interesting. I think I can get away with a commons pool implementation but your code does give me a useful template. Many thanks.
Peter On Wed, 2004-01-07 at 20:16, Alex Karasulu wrote: > Peter, > > I did just the same here: > > http://cvs.apache.org/repos/asf/incubator/directory/ldap/trunk/eve/frontend/buffer/ > > This is a buffer pooler for expensive direct buffers. Take a > look at both the api and the impl projects. > > Alex > > > > > From: Stephen McConnell <[EMAIL PROTECTED]> > > Date: 2004/01/07 Wed PM 12:36:36 EST > > To: Avalon Developers List <[EMAIL PROTECTED]> > > Subject: Re: Merlin Pooled components > > > > Peter Courcoux wrote: > > > Hi all, > > > > > > I have a requirement for pooling components and am using a version of > > > merlin which is a couple of months old. I seem to recall that the pooled > > > lifestyle handling was switched off. Is this still the case and if so, > > > is there a recommended pattern for providing pooled components? > > > > Correct. > > > > Based on discussion on this subject over the last six months - my > > conclusion is that the related semantics area for all intensive purposes > > a rather gray area. This is primarily related to strong relationship > > between pool and the components it manages (in particular things like > > recycling strategies), and subtle relationships between a component that > > is using a pooled component and the pool itself. > > > > My recommendation concerning pooled components is: > > > > 1. declare a factory service with formal instance acquisition > > and release methods .. e.g. > > > > public interface WidgetPool > > { > > Widget aquireWidget(); > > void releaseWidget( Widget widget ); > > } > > > > 2. implement a component the exposes the pooled interface as a > > service using whatever pool technology you like (excalibur, > > commons pool, etc.) > > > > /** > > * @avalon.service type="WidgetPool" > > */ > > public class DefaultWidgetPool implements WidgetPool > > { > > ... > > } > > > > 3. for consumer components, declare a dependency on the pool > > directly > > > > /** > > * @avalon.dependency key="pool" type="WidgetPool" > > */ > > public void service( ServiceManager manager ) > > throws ServiceException > > { > > m_pool = (WidgetPool) manager.lookup( "pool" ); > > } > > > > Using this approach you component implementation is crystal clear about > > the assumptions concerning the WidgetPool and your implementation can be > > much more strict about acquisition and release policies. > > > > Hope that helps. > > > > Cheers, Stephen. > > > > > > > > > > I will be grateful for any thoughts. > > > > > > Many thanks. > > > > > > Peter > > > > > > -- > > |------------------------------------------------| > > | Magic by Merlin | > > | Production by Avalon | > > | | > > | http://avalon.apache.org/merlin | > > | http://dpml.net/ | > > |------------------------------------------------| > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] -- Peter Courcoux <[EMAIL PROTECTED]> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
