| <?xml version="1.0"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| |
| <document> |
| |
| <properties> |
| <title>Fulcrum YAAFI Avalon Container</title> |
| <author email="siegfried.goeschl@it20one.at">Siegfried Goeschl</author> |
| </properties> |
| |
| <body> |
| |
| <section name="What is YAAFI?"> |
| |
| <p> |
| The Yet Another Avalon Framework Implementation of an Avalon container. |
| </p> |
| |
| <p> |
| YAAFI is a light-weight implementation of a service framework using the |
| Avalon service lifecycle interfaces aka Avalon container. There are a |
| few other implementations out there such as Phoenix, Fortress, Loom, |
| Keel and Merlin but YAAFI gives you a lot of bells and whistles with minimal baggage. |
| The goal of the implementation is to provide a light-weight Avalon container |
| to be embedded into existing applications and/or other containers. |
| </p> |
| |
| <subsection name="What we left out"> |
| <p> |
| <ul> |
| <li>logger manager implementation since this is done by log4j quite nicely</li> |
| <li>run-time instrumentation to monitor application health</li> |
| <li>service implementation versioning</li> |
| <li>service initialization in a background thread</li> |
| <li>no support for lifestyle other than Singleton</li> |
| <li>classloader hierarchies for components</li> |
| <li>service selector implementation</li> |
| <li>no javadoc tag support for automatically creating component decriptors</li> |
| </ul> |
| </p> |
| </subsection> |
| |
| <subsection name="What we actually implemented"> |
| <p> |
| <ul> |
| <li>a light-weight Avalon container only depending an the Avalon Framework libraries</li> |
| <li>a container which can run components written for ECM, Fortress, Phoenix and Merlin</li> |
| <li>ability to be embedded in other Avalon containers such as Phoenix</li> |
| <li>automatic reconfiguration for the whole Avalon container or individual services</li> |
| <li>automatic shutdown of the whole Avalon container</li> |
| <li>support for early or on-demand initialization</li> |
| <li>support for encrypted configuration files</li> |
| <li>dynamic proxies and service interceptors</li> |
| <li>dynamic expansion of variables found in the component configuration file</li> |
| </ul> |
| </p> |
| </subsection> |
| |
| <subsection name="The rest of the Avalon universe"> |
| <p> |
| <ul> |
| <li> |
| <a href="http://excalibur.apache.org/fortress/">Fortress</a> is another Avalon container under the |
| Apache umbrella. It is also targeted to be embedded into existing |
| applications. |
| </li> |
| <li> |
| <a href="http://loom.codehaus.org/">Loom</a> is another Avalon based micro-kernel |
| derived from Phoenix |
| </li> |
| <li> |
| <a href="http://dpml.net/metro/latest/">Metro</a> was meant as unification |
| of Avalon containers but moved away from Apache. |
| </li> |
| <li> |
| <a href="http://plexus.codehaus.org/">Plexus</a> another light-weight being |
| able to run Avalon components. |
| </li> |
| <li> |
| <a href="http://xingu.sourceforge.net/">Xingu</a> is a Avalon-based |
| component repository. |
| </li> |
| </ul> |
| </p> |
| </subsection> |
| |
| </section> |
| |
| </body> |
| |
| </document> |