Jakarta main

Avalon main

Essentials


Guide


Reference


For Developers


Avalon Framework - The Component Lifecycle
Avalon Framework - The Component Lifecycle

by Berin Loritsch, Peter Donald, Leo Simons


Introduction

A Component lives within something called a container. Avalon provides an application that functions as a container for Applications (which are Components) called Phoenix. You can also create your own Components that function as a container.

The contract between a container and a contained Component is simple: the container is required to take a Component through what is called its lifecycle.


The Lifecycle

The lifecycle of a Component specifies the methods that can be called on it, and the order in which this may happen. Some methods can be called only once in a specific Phase of a Component its lifecycle, others may be called multiple times. These methods are called the lifecycle methods.

It is up to each container to indicate which lifecycle methods it will honor. This should be clearly documented together with the description of the container. Phoenix supports all of the lifecycle methods defined in the Avalon Framework API.


The Lifecycle interfaces

A Component exposes its lifecycle methods by implementing the lifecycle interfaces. Each of these defines one or more methods that represent a specific Phase in a Component's lifecycle. The defined interfaces are:

  1. LogEnabled
  2. Contextualizable
  3. Composable
  4. Configurable
  5. Parameterizable
  6. Initializable
  7. Startable
  8. Suspendable
  9. Recontextualizable
  10. Recomposable
  11. Reconfigurable
  12. Reparameterizable
  13. Stoppable
  14. Disposable
Note:java.lang.Runnable has also been in use as a lifecycle interface. This is not recommended and is not supported by Avalon. Instead, the run() method is the responsibility of the Component itself. If you wish to use it, call it from within start() or another method.

Phase order

The order in which the various lifecycle methods are called is very specific. While none are required (it is possible to have a Component implementing none of the lifecycle methods, although the use of that would be limited), some can only be used when others are as well. This is best explained using a few examples.

simple examples

The lifecycle of a Component implementing only Configurable for example will be:

  1. constructor
  2. configure
  3. finalize

The lifecycle of a Component implementing only Composable will be:

  1. constructor
  2. compose
  3. finalize

complete

If a Component implements more than one interface the order of the events (compose, configure etc.) follow a specific order. A Component implementing all above interfaces (including Runnable) will follow this specific path:

  1. constructor
  2. contextualize
  3. compose
  4. configure
  5. parameterize
  6. initialize
  7. start
    1. suspend
    2. recontextualize
    3. recompose
    4. reconfigure
    5. reparameterize
    6. resume
  8. stop
  9. dispose
  10. finalize

Phases executed once

These lifecycle methods are only called once in the entire life of a Component:

  • contextualize
  • compose
  • configure
  • parameterize
  • initialize
  • dispose

Phases executed once or more

These lifecycle methods are called at least once and possibly more, depending on the container:

  • start
  • stop

The Suspendable Interface

The methods suspend() and resume() are not guaranteed to be called at all, even when implemented. They can be called more than once, but only after one another and between start() and stop(). The reason they exist is so the container can notify the Component it needs to come to temporary stop any operations. The container may need to perform some synchronized operation on one of the Components used by this Component, or it may wish to call any of the following methods, which can also be called zero or more times, and only between a suspend() and a resume().

  • recontextualize()
  • recompose()
  • reconfigure()
  • reparameterize()




Copyright ©1999-2002 by the Apache Software Foundation. All Rights Reserved.