Several more problems with the narrowing approach:
- Forces the container to use a proxy of some kind, regardless of whether the
container needs to isolate components. Limits the container's options for
scaling down.
- Prevents the use of the same interface for multiple services (including
super-interfaces).
- Prevents delivery of things that are not interfaces (eg File or
ClassLoader).
- Prevents additional services from being added during the lifetime of the
component.
- Limits lookup and query mechanisms to cast and instanceof. Prevents us
adding additional kinds of lookup and query methods later.
On Sun, 8 Dec 2002 06:03 am, Leo Sutic wrote:
> Stephen wrote:
> > * Service locator
> >
> > This is a new concept that is very similar to the
> > Merlin extension handler. It a component that provides
> > a plug-in lookup solution that can be narrowed to a
> > particular interface (and can be located by the container
> > using the interface name as the key). A service locator
> > can be applied to the following three areas:
> >
> > * context value lookup
> > * service lookup
> > * lifecycle stage handler lookup
>
> If you have two interfaces:
>
> interface A {
> void method ();
> }
>
> interface B {
> void method ();
> }
>
> and a dynamic proxy (or any class) implementing both interfaces:
>
> class Proxy implements A, B {
> ...
> }
>
> Proxy proxy = ...;
>
> The two calls:
>
> ((A) proxy).method ();
> ((B) proxy).method ();
>
> are indistiguishable. This is true even if you are using a dynamic proxy's
> InvocationHandler. (In which case they will both be calls to A.method.)
>
> Unlike C#, Java has no way of distinguishing through what interface the
> call was made.
>
> I think this makes your idea less useful.
>
> (Yes, I have a proposal of my own, writing it right now...)
>
> /LS
--
Adam
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>