Hi,
I am interested in understanding Merlin design (and implementation).
I understand server design fundamentals but am not familiar with Avalon container and component terminologies etc.
Amit:
Typically a developer of a component does not need to know anything about the Merlin design or implementation. What developer does need to understand is the concepts related to the component specifications. The component specifications deals with several notions:
deployment criteria -------------------
This concerns the subject of how a component declares the things that it needs toward a container - under Avalon this is handled using javadoc tags that describe both deployment and runtime dependencies that a component needs to be fulfilled prior to deployment - information about this subject is available at the following urls
Overview: http://avalon.apache.org/merlin/reference/component/descriptors/index.html
Detailed Tag Specification: http://avalon.apache.org/meta/tools/tags/index.html
deployment artifacts --------------------
Once a container has determined that everything a component requires can be fulfilled, the container can proceed with component deployment. Deployment leverages a number of "lifecycle artifacts" - object that are supplied to a component by a container. These include things like a logging channel, a context object, a service manager, configuration, etc. The full set of deployment artifacts are described under the following urls:
http://avalon.apache.org/merlin/reference/component/artifacts/index.html
lifecycle management --------------------
Deployment artifacts can be delivered to a component via constructor or alternatively via lifecycle stage delivery interfaces. Information about the respect creation, runtime and end-of-life management strategies is available under the following links:
http://avalon.apache.org/merlin/reference/component/lifecycle/index.html
lifecycle management --------------------
Finally - for the developer point of view there is one addition concern related to component lifestyles. This subject deals with the distinction between thread-safe components - transient components, per-thread semantic - and how these are handled by the container that the component is executing within. A very brief listing is included in the following link:
http://avalon.apache.org/merlin/reference/component/lifestyle/index.html
container specification -----------------------
Beyond pure component development is the subject of component deployment which is where container come into play. An Avalon containers provides support for component composition - enabling for example the creation of composite components which in turn can be used is new application scenarios. The full specification of the language used to write a container is available here:
Container Directive spec. http://avalon.apache.org/merlin/reference/containment/directives/index.html
Configuration Override Spec. http://avalon.apache.org/merlin/reference/containment/overrides/index.html
But the best source of getting going is the introductory tutorial: http://avalon.apache.org/merlin/starting/tutorial/index.html
I am interesting in understanding Merlin design and implementation before we (our company) decide on possible adoption of the framework.
Beyond the above references - anything else into getting into high-powered component management.
* embedding * facilities
Embedding is a subject you would be concerned about if your thinking about highly dynamic systems where you want to control the container at runtime based on external events. To use Merlin in this context requires at least a basic understanding of the core sub-systems. Documentation on this subject is in progress and will be made available under the following link:
http://avalon.apache.org/merlin/merlin/systems/index.html
The second area "facilities" is a subject that deals with components that directly interact with Merlin meta-model. Though model interaction facilities can change the entire personality of a container. There is some initial documentation about facilities we are working on now - including JMX, JMS and HTTP handlers. As things come together you should be able to find information about available facilities at the following link:
http://avalon.apache.org/merlin/extensions/facilities/index.html
But lack of structured design documents explaining various concepts is severely hampering my progress (and hence adoption of Merlin).
The placeholder for this documentation is included below - and for the moment this is largely empty. However, content is coming and a lot of the big picture stuff that I think your after will arrive in the coming weeks.
http://avalon.apache.org/merlin/reference/deployment/index.html
I have read all that's available on Merlin/Apache's website and also looked at Google results for Merlin etc... Have been following the discussion thread "Avalon Framework Design" and have checked out http://wiki.apache.org/avalon/AvalonDiagrams too..But all this didn't help me understand the code to a level, from where I can start feeling "at home" with Merlin/Avalon core sources.
The core of merlin is the Avalon Composition API. This is thing that is often referred to as the meta-model. Thorough this API you can programatically create containers, add and remove components, control the deployment of components, change configuration, redeploy components, etc. It's basically the heart of Merlin and the center of the model-driven architecture. Pending completion of the docs related to deployment - it is work taking a look at the Javadocs for the composition package.
http://avalon.apache.org/merlin/api/index.html
In particular:
* org.apache.avalon.composition.data
Immutable data types used to describe containers and component deployment scenarios.
* org.apache.avalon.composition.model
The API that defines the model-driven architecture and through which the entire runtime environment is controlled.
Can someone point me to any document (or source of information) which you find useful for explaining overall design of Merlin/Apache Framework to relative "newbies".
I'm hope that the above references (many of which are relatively new) will be of help. In the meantime please ask questions and we'll be happy to answer them here on the list.
And finally, recent comments from "Ole Bulbuk" are scaring me off
Merlin/Avalon.
There is another point-of-view concerning the comments from Ole BulBok. First of all - yes - he's having to deal with transition - and we are painfully aware of this. On the other hand - we (Avalon) are consolidating on a single implementation platform - single architecture - single container. This decision has detrimental impact on users who have invested in earlier Avalon container solutions. However - at the same time this consolidation means that the problems that Ole has encountered will not happen in the future. Avalon for a long time suffered from a divided community - that has ended - there is no longer a division. Everything is now focused and grounded on one platform (for the first time in the history of Avalon).
Would love to hear any success stories (in commercial deployments) from the community.
There are a number of large scale projects in the financial services sector that are basing themselves on the Avalon platform. While I'm not in a position to provide details - I can say that common themes across these projects are:
* short time-to-market * component reuse prerequisites * deployment simplicity * apache avalon community
If you need additional information don't hesitate to contact me off-list.
Cheers, Stephen.
--
|------------------------------------------------| | Magic by Merlin | | Production by Avalon | | | | http://avalon.apache.org/merlin | | http://dpml.net/merlin/distributions/latest | |------------------------------------------------|
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
