blob: 5638d994c9443b3f045bfe8d56ee19edc9704771 [file] [log] [blame]
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.