2010/12/15 - Apache Excalibur has been retired.

For more information, please explore the Attic.


Excalibur's most important distributables are two inversion-of-control containers, Fortress, and the deprecated ECM. These containers both support the Avalon-Framework container-component contracts.

Besides these containers, excalibur also provides several reusable components, all of them written for avalon-framework, and some utility libraries. Some of these components are building blocks for the containers we provide, others can run inside those containers.

Stable components

Package Description

Avalon Excalibur's DataSource package in org.apache.avalon.excalibur.datasource allows you to manage pooled connections in one of two ways. You can have the package handle it for you, or you can use a J2EE server's DataSource management. It provides the same kind of access regardless of which method you choose--since they are obtained through Avalon's Component Manager infrastructure.


Avalon Excalibur's resource management code allows you to be notified when a resource has changed. There are two methods of resource management: active and passive. Passive resource management acts as a holder for resources, and after the resource has been modified through it's normal API, notification goes to all listeners. Active resource management does the same, but it also polls the resources periodically to see if the resource was modified through an external method. Active resource management is perfect for monitoring files because they can be modified by external programs, and your program will be notified when the change occurs instead of constantly polling it.


Find Avalon Excalibur's Pool implementations in the org.apache.avalon.excalibur.pool package. There are many implementations that are ThreadSafe, and one that is not. You have the option of not limiting used resources at all, or limiting the used resources based on specific rules.


A very common problem is resolving a source, which means finding a source using a URI.

The source resolver of Avalon Excalibur is a component helping you in this task. It resolves sources from a given URI. The URI can use all available protocols of the JRE. In addition own protocols can be plugged-in. So using the standard protocols like HTTP, FTP or file can be handled in the same way, like dealing with custom, self-build protocols such as myxmldatabase://root/documents/test.xml.


The Store Package provides a way to store named objects without taking care about where and how they are stored. You can choose between different implementations that store the data e.g. in memory or on the file system etc.


Excalibur's XML Utilities provide simplified wrappers for XML parsers, transformers and XPath evaluators. It also provides interfaces and classes useful for constructing a pipeline of XML components by defining interfaces for consuming and producing XML in either SAX or DOM formats.

Container building blocks

Please see this page for information on subprojects like Excalibur-Logger and Excalibur-Lifecycle, which are primarily used to build containers.

Deprecated components

Please see this page for information on older components that have been deprecated.