This project uses the AIOLOS framework which is automatically downloaded when this app is run. This project can only be run when a released version of the AIOLOS Framework is downloadable on http://openstack1.test/.
The framework uses Felix OSGi Container and a Cloud Environment (currently OpenStack) to develop distributed applications.
An application is developed inside Eclipse with BNDTools. Documentation on developing with BNDTools can be found on BNDTools.
The example application consists of 6 projects: the Bndtools configuration project cnf, some application
implementation bundles org.example.api, org.example.impls and org.example.servlet, an Android
client application org.example.android and the AIOLOS tools project.
Bndtools uses a cnf project to keep workspace specific settings. Various settings can be configured
in the ext/defaults.bnd file, such as Java Compiler and BND options. In the ext/repositories.bnd file
you can configure which BND plugins to use, and which repositories should be used to provision your
OSGi runtime.
The cnf project also contains local repositories. The localrepo folder is used for 3rd party
libraries that are required by this project and are not available in an online repository.
The releaserepo folder is used to deploy the artifacts to when using the Bndtools release feature.
The implementation projects org.example.api, org.example.impls and org.example.servlet are
regular Bndtools projects that contain an example OSGi application. The org.example.api project
contains the API that provides the Greeting service. In org.example.impls two implementations
of this Greeting service are provided, as well as a Gogo shell command to invoke the service
from command line. The org.example.servlet project provides a HttpService to make the service
available from a web interface. These are regular OSGi projects, that use the Declarative Services
specification for binding services. These bundles are not dependent in any way of AIOLOS, and the
Greeting application can run standalone without AIOLOS using the .bndrun configurations in org.example.impls
or org.example.servlet.
The org.example.android project is an example project on how to develop an Android application that
will be registered as an AIOLOS node. To build and run this project, you will need to use our Androsgi
build tools that enable to run OSGi on top of Android. Check the
androsgi repository for more info.
The tools project contains all necessary scripts and configurations to run the application on the
AIOLOS cloud platform.
It contains the following directories:
-
configsThis contains all configuration files required to configure AIOLOS related OSGi bundles, i.e. the CloudManager and Repository. Three subdirectories are present:
local, containing configuration files for local testing, andopenstackfor testing on an OpenStack cloud, andec2to test on the Amazon EC2 public cloud.The Repository configuration file contains a comma-separated list of urls to all repositories should be offered by the Repository service, or thus repositories that contain bundles that one should be able to start on the nodes at runtime. An url can be both a http url, or a (relative) file path. By default these are the local repositories containing the application bundles.
-
resourcesThe
resourcesdirectory contains a copy of one of theconfigsmaps that is currently used for running. The and build system will copy the correct configuration files when runningant run. -
scriptsThe
scriptsdirectory contains a number of utility scripts to generate an OSGi repository and generate an index of the repository. -
*.bndrunThe
toolsproject also contains .bndrun files that are used to start up the nodes with AIOLOS. Three predefined .bndruns exist:run-mgmt.bndrun: this is the first node started when using theant runcommand. This is the so-called management node, that starts various management bundles such as the CloudManager, the PlatformManager and the Webconsole UI. You can add additional application specific bundles to this .bndrun files that you want to have running on this node. In the case of the example application, this one also contains the servlet and command bundles.run-vm.bndrun: this .bndrun is used when you click the "New Node" button in the Webconsole UI. This contains the basic AIOLOS bundles, and some application specific bundles you want on each Node. In the case of the example application, this one contains the implementations of the Greeting service.run-vm-empty.bndrun: this .bndrun contains the minimum required AIOLOS bundles, without any application-specific bundles. This one is used when you click the "Empty Node" button in the Webconsole UI, and is used as basis for scaling components.
Other custom .bndrun files can be provided, i.e. a file to run all components on one runtime to test the application without distribution of bundles.
AIOLOS uses Ant as its build system. The top-level project provides the following ant build targets:
-
cleanWill remove all build artifacts such as .class and .jar files from the projects.
-
buildWill compile and build all projects.
-
junitWill run all junit tests (if provided) in all projects.
-
runWill start an AIOLOS management OSGi runtime. Use
-Dconfig=xxxto specify which configuration to use. The default config islocal -
killWill kill all running VMs when a cloud config is used. Use
-Dconfig=xxxto specify which configuration to use.