Stefano Bagnara wrote:
> init(Config) where Config contains a Context that in turn contains a
> mean to retrieve services is just an obfuscated way to use the Avalon
> serviceLocator pattern (service(ServiceManager s)).
Well, you can say obfuscated and I can say that it is the commmon mechanism
used throughout the J2EE specifications for configuring container managed
components. Passing a configuration object from which one can get to a
context object is a common pattern, along with JNDI. But we can agree that
we can have one init() instead of N setter methods, where N is unbounded.
> Imho dependencies have to be shown in the clearest of the ways.
Clear, yes. But everytime you add a new dependency you have to change the
API.
> JNDI is another service locator, but less powerful than ServiceManager.
JNDI is more powerful than the Avalon Service Manager, if one really
understands it.
> In fact with Avalon Serviceable it is easy to have 2 instances of the
> same component configured in totally different ways because they receive
> a different ServiceManager. To do that with JNDI you add one level of
> complexity.
The container is responsible for providing the appropriate InitialContext to
the contained component. No extra levels of anything.
> It would be much better to introduce our own "serviceable" interface
> and if you like JNDI use JNDI inside the ServiceManager you pass
> to the object. This way the plain objects does not depends on JNDI
> but only on the serviceable interface.
Servicable is just a means of providing the lookup service (Service
Manager). If we really want to drink the DI koolaid, we should add a setter
for every service. Then the container can inspect everyone to see what
service(s) they need.
--- Noel
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]