Leo Sutic wrote:
> 
> > From: Stephen McConnell [mailto:[EMAIL PROTECTED]]
> >
> > Based on the ServiceManager/ServicePool interfaces as presented 
> > in 06099, I think you would need a higher level abstraction that 
> > aggregates the two concerns.  For example:
> >
> >   interface ServiceResolver extends ServiceManager, ServicePool {}
> >   interface Resolvable extends Serviceable
> >   {
> >      public void resolve( ServiceResolver resolver );
> >   }

I've made a mistake here concerning inheritance of ServicePool.  
ServicePool parameters assume the role is already established
so my suggestion is invalid unless pool interfaces included the 
role argument. A corrected spec of ServiceResolver in included 
below.

> I still have one issue with this: ServicePool uses "checkout" while
> ServiceManager uses "lookup", leading to different code and semantics 
> for poolable/non-poolable components.
> 
> However, if:
> 
> interface ServiceResolver {
>   Object lookup (String role);
>   void release (Object service);
> }
>
> in order to get the same code/semantics for poolable/non-poolable
> components, then we're back to the old CM interface.
> 
> How would you solve this?

This suggests that poolable services are resolvable without a token.
I really need you guys to clarify this for me because according to 
all of the discussions so far, you would need something like:

  interface ServiceResolver extends ServiceManager 
  {
     Object lookup (String role, Object token );
     void release( Object object );
  }

The above interface explicitly assumes that lookup( String role ) is a 
valid and semantically relevant operation for poolable services.  If it
is, the Resolvable/ServiceResolver as described above is workable.  Can 
you confirm ?

Cheers, Steve.



--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to