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]