I want to bring everyone's attention to the new packages in Avalon Excalibur's CVS.
I have some new packages that can all work together, or be separated.  Among the
new goodies are a suite of managers.  The manager hierarchy is a bit of a shift, but
let's look at what is here.

1) Abstraction for Containers and ContainerManagers.  With this abstraction, we
    can have one body of code manage the instantiation, care, and feeding of the
    Container.  Additionaly, there is a separation of ComponentManager and Container.
    Examples of what should be containers in Cocoon are the Cocoon component, and
    the Sitemaps.  Lastly, there is a new ComponentHandler type: 
PerThreadComponentHandler.
    The new handler type has exactly one Component instance per thread.  This is
    perfect for Generators and Serializers where there is only one instance per thread.

2) CommandManager and ThreadManager.  These are a team (the CommandManager will not
    function without a ThreadManager).  The ThreadManager manages the Thread policies
    for EventPipelines (for event queues and handlers).  The currently working one
    uses the number of CPUs for a system, with a multiplier for the number of threads
    per CPU.  The CommandManager exposes a Queue to all Components who need it.  
Currently,
    the convention is to place the reference in the Context object.  There are three
    types of Commands:  Command, DelayedCommand, and RepeatedCommand.

3) PoolManager.  This will use a CommandManager if it is available, and manage the
    size of the pools asynchronously.  If the CommandManager is not used in the system,
    the Pool implementation is dumb, and only grows (it does not shrink without the
    CommandManager).

4) LoggerManager.  The LoggerManager is changed to be a clean implementation of the
    Logger abstraction.  There is the LogKitLoggerManager and a Log4JLoggerManager.
    When we use the new LoggerManager, we will be able to test authoritatively which
    logging toolkit is more performant.  My guess is that they are very similar in
    performance.

There are some things that will be changing:

Namely the interface for the RoleManager will have a method to get the ComponentHandler
implementation we need for the Component in question.  The goal is to be able to manage
the instances of Components without marker interfaces.  That means the Roles 
configuration
file format will change with the addition of an attribute or two.  It also means that
the default format of the Configuration will change somewhat as well.

There are a number of things left to do, like a more intelligent PoolManager that 
allows
for adaptive pool sizing.  The abstract container code is also being fleshed out to 
take
advantage of these features.  That means that there is not too much code that must be
written for the Cocoon containers.

-- 

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


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to