Geoff Howard wrote:

Stephen McConnell wrote:

Geoff Howard wrote:

If you havn't read up on the blocks docs on the wiki lately (the last two weeks) you really should. Stefano has put a good series of pages up detailing the plan and the current implementation ideas.


Just a couple of observations -

The usage of /BLOCK-INF may conflict with the Avalon Merlin container /BLOCK-INF which is used to hold avalon block descriptors and related configuration profiles. Usage of "block.xml" also conflicts with block.xml used with the Merlin container which is not the same as block.xml used with the Coocon context.


As it seems you've been reading up on those docs can you give your perspective on where our needs differ from what the various Avalon options offer as they exist now and where they seem to be going in the near future?


Geoff:

Going back to early discussions on the notion of a block (RT-V2 from memory) a common set of requirements could be asserted. These requirements focus on the abstraction of Cocoon requirements to a more general service management viewpoint relative to composite component management.


* management of a running composite system * functional and service modularization through packaging * dynamic composition to create new functional units

Released Avalon facilities that collectively address all of the above include the following packages/systems:

 * Avalon Meta - a meta info model to describe a component contract
   (service dependencies, context casting assumptions, context entry
   dependencies, configuration schemas, parametirization and logging
   assumptions) for a given component type - represented as a
   serializable Type instance. http://avalon.apache.org/meta

 * Avalon Composition - this is the meta-data model that describes
   units of deployment and units of composition.  A unit of deployment
   associates a Type with a complete model describing how to deploy
   and manage instances of the type.  A unit of composition describes
   the aggregation of a set of deployment units to form a virtual
   deployment unit.  As such, a unit of composition appears as a
   unit of deployment.  The composition model includes meta data
   directives for classloader management, block composition by
   reference, and service publication.

 * Avalon Activation - the activation framework is the runtime system
   within which serialized deployment and composition models are
   established within the runtime environment (classloaders, devices,
   ports, etc.).  The activation framework provides support for
   assembly of runtime managers (an Appliance that manages a deployment
   model, and a Block that manages a containment model), the deployment
   of managers, decommissioning, and potential recommissioning.

 * Avalon Merlin - the Merlin platform is a container based on the
   above packages and a number of Excalibur utilities that provides
   support for the establishment of kernel level systems (logging,
   jmx management, repository management, block archive (.bar)
   installation, etc.  The platform is designed for embedding within
   different application scenarios. http://avalon.apache.org/merlin

In order to address the part of your question concerning where things are going, I'll take a jump back to the original three bullet points I referenced at the beginning and use this to throw some light on current status and forward looking plans.

* management of a running composite system

   What we have in place today is the ability to deploy and
   decommission a kernel (i.e. an all of nothing solution). However, the
   entire architecture, meta-model and runtime framework is designed to
   support fine-grain management such that we will be able to redeploy
   containment or deployment units anywhere within a hierarchy with
   full consideration for implicit and explicit dependencies.  This
   will be exposed through JMX management points and will provide
   support for custom component management points.

   A second aspect of management concerns the federation of different
   runtime kernels relative to a single management point.  For example
   a kernel running inside a web-app would register itself with a
   management server.  From the management server you see the set of
   runtime kernel instance.  Each kernel exposes a containment
   hierarchy and the respective managers (Appliance and Block instances)
   which in turn expose manageable component instances.

* functional and service modularization through packaging

The meta-info, meta-data, composition and activation framework
provides excellent support for the representation and micro-
level packaging of components at a system level. Complementing
this a repository framework that is structurally equivalent to
the Maven repository model (which provides some interesting
benefits when developing in the Maven environment). The
repository model is possibly the structural part of what is
refered to as a librarian in Cocoon.


Supporting repository management is the bar file. A bar file
(block archive) provides a packaging model that lets us associate
containment and deployment information into a single entity, along
with resources that must be packaged (for example - to meet
particular licensing requirements). Bar file structure mirrors
the structure of a repository for a particular group within a
repository. Current implementation provides support for bar
install. Bar execution is planned but requires some additional
work.
* dynamic composition to create new functional units


   This subject is central to the composition, activation and Merlin
   system.  We can do dynamic creation of new service models via
   composition of existing blocks.  For example, each cornerstone
   component is available in form that can be imported into a
   composite definition.  We have examples available of James as
   a composite component, the recent release of the OpenIM instant
   messaging platform, sharing many of the same components that
   james uses - all using composition as the structural backbone
   on which each is exposed as new dynamically created service.

However - there are some features of the Cocoon block vision that have not been addressed at this time - and require more than a moments thinking. The first of these is the notion of block inheritance. This functionality is desirable from a service management perspective but will not appear until the fundamentals are rock solid.

Aside from all of that - I have been lurking here off and on for several months - and see overwhelming reasons for collaboration (and equally overwhelming reasons why this could be a bad thing to do). In the short terms there are items that need to be addressed over in Avalon land that will priority in the short term. These include the incorporation of a some additional functionality to complete the legacy Phoenix support (Block listeners and JMX registration, and more comprehensive logging support); work to bring the meta package, composition and activation packages up to the point where we can handle ECM/Fortress components with minimal transition overhead.

Once past the ECM/Fortress/Phoenix function support point - the roadmap lays out a bunch of immediate priorities - management, federation, distribution, and security.

Finally, I am aware that the above does not necessarily answer your question concerning your needs - largely because its kind of difficult to appreciate the needs (mainly a terminology background thing that makes it hard work (for me) to unwind/translate concepts here into the corresponding notions that I'm dealing with. Apologies for that and hopefully this will provide at least a starting point.

Stephen.

--

Stephen J. McConnell
mailto:[EMAIL PROTECTED]





Reply via email to