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
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)
Doing everything from the (very limited) felix command shell is tedious, so we try to get the web console working.
The primary bundle is the full webconsole bundle
After fiddling a lot with required bundles I finally got it working. The required bundles in addition to the webconsole were:
OSGi Compendium and the Jetty http service and I also installed the Log service, this is not required however.
This makes up the following bundle list :
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)
15|Active | 1|Apache Felix Log Service (1.0.1)
19|Active | 1|OSGiTutorial (1.0.0.SNAPSHOT)
25|Active | 1|Apache Felix Web Management Console (All In One) (4.2.0.all)
41|Active | 1|Apache Felix Http Jetty (2.2.2)
42|Resolved | 1|OSGi R4 Compendium Bundle (4.1.0)
And there we have our web console . user=admin, password=admin.
OSGi#
Table of Contents
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:
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) :
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
file to use
Then run mvn clean install 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)Apache Felix Web Console#
Doing everything from the (very limited) felix command shell is tedious, so we try to get the web console working.
The primary bundle is the full webconsole bundle
After fiddling a lot with required bundles I finally got it working. The required bundles in addition to the webconsole were: OSGi Compendium
and the Jetty http service
and I also installed the Log service
, this is not required however.
This makes up the following bundle list :
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) 15|Active | 1|Apache Felix Log Service (1.0.1) 19|Active | 1|OSGiTutorial (1.0.0.SNAPSHOT) 25|Active | 1|Apache Felix Web Management Console (All In One) (4.2.0.all) 41|Active | 1|Apache Felix Http Jetty (2.2.2) 42|Resolved | 1|OSGi R4 Compendium Bundle (4.1.0)And there we have our web console
. user=admin, password=admin.