Title: Integrators Guide
# Integrators guide
This page describes things that should be considered when integrating the
Apache Aries project into a runtime.

<a name="IntegratorsGuide-InstallingApplications"></a>
## Installing Applications

An application is installed using the AriesApplicationManager service. A
client looks up the AriesApplicationManager and calls one of the
createApplication methods. There are two createApplication methods. The
first takes a URL that identifies the application. When this is called the
application is archive is downloaded from the specified URL and stored in a
temporary location. The second takes an IDirectory. The application utils
project contains two implementations of IDirectory, one that maps onto
directories and the other maps onto a zip. This method creates applications
with no downloads. The createApplication method will attempt to convert non
bundle content into bundles and will resolve the application in order to
find all the dependencies. This does not affect the original application.
To get a converted, resolved application the returned AriesApplication can
be stored elsewhere. Storing the AriesApplication will store an application
archive.

Once the AriesApplication has been created it can be installed into a
framework using the install method of the AriesApplicationManager. The
install method returns an ApplicationContext which represents the runtime
state of the application.

<a name="IntegratorsGuide-StartingandStoppinganApplication"></a>
## Starting and Stopping an Application

The application can be started and stopped by calling the start and stop
methods on the ApplicationContext.

<a name="IntegratorsGuide-UninstallinganApplication"></a>
## Uninstalling an Application

The application can be uninstalled by passing the ApplicationContext to the
uninstall method on the AriesApplicationManager.

<a name="IntegratorsGuide-FelixFileInstall"></a>
## Felix FileInstall

The aries application project contains an example application installer
that hooks into the felix file install project. It automatically installs
and uninstalls .eba archives found by FileInstall.

<a name="IntegratorsGuide-BundleConverters"></a>
## BundleConverters

A BundleConverter is a service that can convert an artefact into an OSGi
Bundle. The interface is provided an IFile indicating the artefact in the
application and an IDirectory for the root of the aries application. If the
artefact can be converted then an InputStream is returned that contains the
bytes for the bundle.

The Aries application project contains a converter for turning war files
into web application bundles.

<a name="IntegratorsGuide-AriesApplicationResolvers"></a>
## AriesApplicationResolvers

The Application-Content header in the application does not denote the full
content of the application. When the application is created the runtime
will use an AriesApplicationResolver service to work out what extra bundles
are needed to run the application.

The aries project contains two resolvers:

1. The NoOpResolver. This resolver assumes that all the required bundles are
contained by value in the application and simply returns the information
about the bundles in the application.
1. The OBRAriesResolver. This resolver makes use of OBR to resolve the
applications

The AriesApplicationManager service picks up any resolver in the service
registry, so alternatives can be provided if the default resolvers do not
provide the desired behaviour.

<a name="IntegratorsGuide-ApplicationContextManagers"></a>
## ApplicationContextManagers

The AriesApplicationManager does not itself know how to put an application
into an OSGi framework. To do this it calls out to an
ApplicationContextManager. 

The aries project contains a single simple application context manager
which installs the application into a flat framework. This does not provide
the isolation expected for the application content and is provided as a
simple sample.
