cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Berin Loritsch <>
Subject Re: Getting rid of deprecated Interfaces/Classes/Methods
Date Tue, 24 Sep 2002 13:02:26 GMT
Carsten Ziegeler wrote:
> Giacomo Pati wrote:
>>Hi Team
>>I'll have some spare time this week and thought of moving the HEAD branch
>>away from deprecated stuff from newest Avalon Framework/Excalibur jars.
>>My plan will be:
>>   1.  Get rid of Loggable in favor of LogEnabled
>>   2.  Get rid of Component and move to Service infrastructure
>>1. is straight forward and doesn't need any voting I think
> Yupp. +1
>>2. can be done in two steps:
>>   a. move from Component to Service infrastructure as the
>>ExcaliburComponentManager supports this.
>>   b. use Fortress/Merlin (don't know the status of those and which one
>>makes more sense for Cocoon to be used, so I need some advice of
>>Avalonians here)
> What does this mean in terms of compatibility and a stable Cocoon? Are
> written components using a CM with Composable and Component still working?
> I think noone will recode all the components he has written so far. But
> I guess that this is covered.

Fortress has a DefaultContainer that fits the best for Cocoon.  In fact,
Cocoon can extend the DefaultContainer and add in any missing pieces it
needs to get the job done.

In its current state, any Composable component will be able to access
any service (i.e. generic Object) due to the wonderful dynamic proxy
mechanism of JDK 1.3.  As long as you are using JDK 1.3+ everything will
work fine.

Fortress is moving toward a MetaInfo enabled component matching system,
but that is done in a separate container.  You will be able to take
advantage of that when it is done.  Also, Fortress has a "big jar" that
includes all the Excalibur dependencies in one JAR file.

> So the remaining question is, is fortress/merlin stable and usable?
> If these both points can be answered positiv, I would say: +1.

Fortress is useable (others have used it without problem.  Development
is still continuing on it, however it is being done in such a way as
to not cause problems with existing users.

The biggest thing you will have to do to migrate to Fortress is to
change your cocoon.roles file format.  It is the roles file that now
determines the "lifestyle" of a component, and the marker interfaces
SingleThreaded, ThreadSafe, and Poolable do not have any meaning any

Your Poolable components would have to change because Fortress uses
the MPool package (part of the Event package).  The Poolable and
Resettable interfaces are not there.  I do need to provide a mechanism
for the MPool package so that we can reset components.

One of the nice things is that Cocoon will be able to handle more
load using Fortress.  There is a profiling testcase that compares the
pure lookup/release cycles for Fortress vs. ExcaliburComponentManager,
and Fortress comes out ahead 15:1 (or more).  The higher the load,
the better Fortress does.  That figure even includes the proxied
ComponentManager implementation.

My question for you guys is whether you want me to force you to change
your interface for Resettable, or to have MPool work by reflection and
discover if there is a reset() method with public access.  If that is
the case, then MPool would be able to call it--whether there was an
interface or not.  I think the latter would be preferable, as it is
much more flexible--I just need to make it explicit that is what is


"They that give up essential liberty to obtain a little temporary safety
  deserve neither liberty nor safety."
                 - Benjamin Franklin

To unsubscribe, e-mail:
For additional commands, email:

View raw message