Fork me on GitHub

What is YAAFI?

The Yet Another Avalon Framework Implementation of an Avalon container.

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.

What we left out

  • logger manager implementation since this is done by log4j quite nicely
  • run-time instrumentation to monitor application health
  • service implementation versioning
  • service initialization in a background thread
  • no support for lifestyle other than Singleton
  • classloader hierarchies for components
  • service selector implementation
  • no javadoc tag support for automatically creating component decriptors

What we actually implemented

  • a light-weight Avalon container only depending an the Avalon Framework libraries
  • a container which can run components written for ECM, Fortress, Phoenix and Merlin
  • ability to be embedded in other Avalon containers such as Phoenix
  • automatic reconfiguration for the whole Avalon container or individual services
  • automatic shutdown of the whole Avalon container
  • support for early or on-demand initialization
  • support for encrypted configuration files
  • dynamic proxies and service interceptors
  • dynamic expansion of variables found in the component configuration file

The rest of the Avalon universe

  • Fortress is another Avalon container under the Apache umbrella. It is also targeted to be embedded into existing applications.
  • Loom is another Avalon based micro-kernel derived from Phoenix
  • Metro was meant as unification of Avalon containers but moved away from Apache.
  • Plexus another light-weight being able to run Avalon components.
  • Xingu is a Avalon-based component repository.