Dependency Manager sample projects
You can download this archive which contains the following directories:
-
felix-framework-6.0.1/ -> this is a felix framework with pre-installed dependency manager r13 artifacts, as well as with configadmin and metatype bundles (these dependencies are required by dm)
-
hello.api/ -> provides a sample component using the dependency manager API.
-
hello.lambda/ -> provides a sample component using the dependency manager Lambda API.
-
hello.annotations -> provides a sample component using the dependency manager annotations.
All samples can be built using either gradle or maven. To build with gradle, simply type "./gradlew jar", and to build with maven, type "mvn clean install". If you are using an http proxy, you must set the following environment:
-
for gradle:
export GRADLE_OPTS="-Dhttp.proxyHost=<ip> -Dhttp.proxyPort=<port> -Dhttps.proxyHost=<ip> -Dhttps.proxyPort=<port>
-
for maven, you must setup your http proxy in your ~/.m2/settings.xml
Once built, the three jars for all hello projects can be put in the felix-framework-6.0.1/bundles/ directory. Now start felix like this:
cd felix-framework-6.0.1 java -jar bin/felix.jar
You should then see the following logs displayed to stdout:
HelloComponent started using Dependency Manager API HelloComponent started using Dependency Manager Lambda HelloComponent started using Dependency Manager Annotations
You can also play with the dm shell commands. First, type "help dm":
g! help dm
dm - List dependency manager components
scope: dependencymanager
flags:
compact, cp Displays components using a compact form
nodeps, nd Hides component dependencies
notavail, na Only displays unavailable components
stats, stat, st Displays components statistics
wtf Detects where are the root failures
options:
bundleIds, bid, bi, b <List of bundle ids or bundle symbolic names to display (comma separated)> [optional]
componentIds, cid, ci <List of component identifiers to display (comma separated)> [optional]
components, c <Regex(s) used to filter on component implementation class names (comma separated), can be negated using "!" prefix> [optional]
services, s <OSGi filter used to filter some service properties> [optional]
top <Max number of top components to display (0=all)> This command displays components callbacks (init/start) times> [optional]
Now type "dm" in order to see all dependency manager components:
g! dm
[1] hello.annotations
[3] hello.HelloComponent registered
[2] hello.api
[0] hello.HelloComponent registered
[3] hello.lambda
[1] hello.HelloComponent registered
[10] org.apache.felix.dependencymanager.runtime
[2] org.apache.felix.dm.runtime.DependencyManagerRuntime registered
active (DependencyManager-Component=*) bundle optional available
org.osgi.service.packageadmin.PackageAdmin service required available
org.osgi.service.log.LogService service optional unavailable