Berin Loritsch wrote:
> 
> > From: Stefano Mazzocchi [mailto:[EMAIL PROTECTED]]
> >
> >
> > Playing the stubborn role at least brought some unification
> > back, which is a good thing, no matter how much my ego is
> > satisfied with the resoluzion :)
> >
> > No, it is clear now and it was clear before, just that I do
> > not perceive
> >
> >  lookup(role,hint);
> >
> > and
> >
> >  lookup(role+"/"+hint);
> >
> > to be architectrually equivalent since they represent two
> > different cognitive ways to access to components and we loose
> > completely the ability to match a role to a java interface.
> 
> Stefano.  There are several component architectures in existence.
> Each one of them has the concept of lookup, container, component,
> and client.  This is true of CORBA, COM, EJB, Servlet, Avalon,
> etc.  The one thing that is different about Avalon from all the
> other component architectures is the lookup.
> 
> The other component architectures *bind* components or component
> stubs to a namespace.  That namespace can be hierarchical (i.e.
> use directories), or flat.  EJBs and Servlets use JNDI.  CORBA
> uses the COS Naming Service.  COM uses another mechanism (I am
> not as familiar with that).
> 
> Everywhere we need to use constraints (i.e. hints), it is usually
> done from a container/component.  The hybrid container/component
> acts as both a container and a component.  Take advantage of this
> fact, and access the components you need directly.
> 
> > While using java interfaces for metadata is a limited
> > approach, at least it allowed stronger typing. The same can
> > be said for 'role = interface'.
> 
> However, it causes problems with inheritance.  Consider if you
> will something that until I brought it to the Cocooners attention
> was rather common.  An abstract base class for component
> implementations implements the ThreadSafe interface.  A concrete
> implementation that extends the abstract class implements the
> Poolable interface.  So which is it?  Because of this fiasco,
> we were forced to put in some checks that would throw an exception
> if there were multiple LifeStyle interfaces implemented for a
> component.

Great point, I missed it before.

> We were also forced to adopt the practice of not declaring lifestyle
> until the component was concretely implemented.  The inheritance
> of lifestyle seemed like a good approach at first, but it caused
> more problems than it solved.
> 
> Not to mention it is difficult to authoritatively say how the
> component would be treated in the container.
> 
> That is why Fortress, Merlin, Phoenix, et. al. declare the lifestyle
> and other meta information in the component descriptor.  The
> developer can say with confidence which creational policy (lifestyle)
> was used for their component.  There was less ambiguity and less
> chance for inheritance causing problems.

Ok, I'm sold.

> Furthermore, with the role = interface issue in over half of the
> cases it is sufficient.  However, the container has no way of
> knowing what the component needs in terms of external components.
> By using meta data, we can implement a more *secure* system by
> only allowing a component to see the external components it
> needs or is registered for.  As it is now, a component can freely
> try interface names to attempt to control or cause internal DoS
> attacks because role=interface and there is no scoping of what
> the component can see.
> 
> We can develop a far more secure system that is more architecturally
> unfriendly to deviant components that might be loaded in at runtime
> because role != interface, and the component can only see what it
> is allowed to see.
> 
> The container can have the needed control to provide a secure
> environment.
> 
> >
> > Anyway, since it seems like I'm the only one having such
> > vision, I'll shut up and let you guys do your job.
> 
> Don't sound so defeated.

Ok, got your points: I'll follow you guys.

-- 
Stefano Mazzocchi      One must still have chaos in oneself to be
                          able to give birth to a dancing star.
<[EMAIL PROTECTED]>                             Friedrich Nietzsche
--------------------------------------------------------------------


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

Reply via email to