OSGi
Back to current versionRestore this version

OSGi#

Open Services Gateway Initiative

Resources#

OSGi Tutorial#

I started a simple exercise (see OSGi In Practice above).

Starting with Eclipse Kepler, downloaded the Equinox runtime first from http://download.eclipse.org/equinox/. Unzip it to /usr/local/equinox-sdk-keplersr1.

Then add the Equinox named User Library to Eclipse, pointing to /usr/local/equinox-sdk-keplersr1/plugins/org.eclipse.osgi_3.9.1.v20130814-1242.jar .

Create a new Java project named "OSGi Tutorial", and make sure you use the above User Library.

Create a new runtime configuration, new Java Application, enter search this should find org.eclipse.core.runtime.adaptor.EclipseStarter and program arguments -console -configuration runtime. However, this does not work, you have to add the -consoleLog, or the (error) logging will go to a file by default.

You also need a configuration/config.ini file with (example) the following contents to be able to run a basic OSGi runtime:

# contents of config.ini
osgi.bundles=\
/usr/local/equinox-sdk-keplersr1/plugins/org.apache.felix.gogo.command_0.10.0.v201209301215.jar,\
/usr/local/equinox-sdk-keplersr1/plugins/org.apache.felix.gogo.runtime_0.10.0.v201209301036.jar,\
/usr/local/equinox-sdk-keplersr1/plugins/org.apache.felix.gogo.shell_0.10.0.v201212101605.jar,\
/usr/local/equinox-sdk-keplersr1/plugins/org.eclipse.equinox.console_1.0.100.v20130429-0953.jar,\
/usr/local/equinox-sdk-keplersr1/plugins/org.eclipse.osgi_3.9.1.v20130814-1242.jar@-1:start

All parameters for the config.ini are documented on the Eclipse Help platform

Install the bndtools from Eclipse update site http://bndtools-updates.s3.amazonaws.com/

Create the HelloWorldActivator.java file :

package org.osgi.tutorial;

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;

public class HelloWorldActivator implements BundleActivator {
	public void start(BundleContext context) throws Exception {
		System.out.println(" Hello , World ! ");

	}

	public void stop(BundleContext context) throws Exception {
		System.out.println(" Goodbye , World ! ");
	}
}
&&

And the helloworld.bnd file (in root of project) :

# helloworld . bnd
Private-Package: org.osgi.tutorial
Bundle-Activator: org.osgi.tutorial.HelloWorldActivator
Bundle-Version: 1.0
Bundle-Name: HelloWorld Sampletje
Bundle-Description: Wat een prachtvoorbeeld !
Bundle-Category: Tutor
Bundle-License: Apache
Bundle-Vendor: DirtyHarry
Bundle-ContactAddress: NL
Bundle-DocURL: http://www.computerhok.nl

Switch to IntelliJ and maven-bundle-plugin#

Import the same project in IntelliJ and add framework support for maven. This is the basic pom.xml(info) file to use

Then run mvn org.apache.felix:maven-bundle-plugin:bundle to create the first bundle in ./target.

Fire up the Felix shell : cd /usr/local/felix && java -jar bin/felix.jar

The lb command lists the currently installed bundles, and we install our bundle with :

g! install file:/home/metskem/workspace/OSGiTutorial/target/OSGiTutorial-1.0-SNAPSHOT.jar
Bundle ID: 13
g! lb
START LEVEL 1
   ID|State      |Level|Name
    0|Active     |    0|System Bundle (4.2.1)
    1|Active     |    1|Apache Felix Bundle Repository (1.6.6)
    2|Active     |    1|Apache Felix Gogo Command (0.12.0)
    3|Active     |    1|Apache Felix Gogo Runtime (0.10.0)
    4|Active     |    1|Apache Felix Gogo Shell (0.10.0)
   13|Installed  |    1|file:/home/metskem/workspace/OSGiTutorial/target/OSGiTutorial-1.0-SNAPSHOT.jar (0.0.0)
g! start 13
g!

Install Felix web console with g! install http://mirror.switch.ch/mirror/apache/dist/felix/org.apache.felix.webconsole-4.2.0.jar and the Felix log service with g! install http://mirror.switch.ch/mirror/apache/dist/felix/org.apache.felix.log-1.0.1.jar

g! install http://mirror.switch.ch/mirror/apache/dist/felix/org.apache.felix.log-1.0.1.jar
Bundle ID: 15
g! lb
START LEVEL 1
   ID|State      |Level|Name
    0|Active     |    0|System Bundle (4.2.1)
    1|Active     |    1|Apache Felix Bundle Repository (1.6.6)
    2|Active     |    1|Apache Felix Gogo Command (0.12.0)
    3|Active     |    1|Apache Felix Gogo Runtime (0.10.0)
    4|Active     |    1|Apache Felix Gogo Shell (0.10.0)
   13|Active     |    1|file:/home/metskem/workspace/OSGiTutorial/target/OSGiTutorial-1.0-SNAPSHOT.jar (0.0.0)
   14|Installed  |    1|Apache Felix Web Management Console (4.2.0)
   15|Installed  |    1|Apache Felix Log Service (1.0.1)