OSGi : Install Eclipse Plugins

From CDOT Wiki
Revision as of 15:17, 23 January 2011 by Jordan.anastasiade (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Install Eclipse OSGi

  • Go to Eclipse Downloads and choose Eclipse Classic (attention at operating system 32/64 bit).
  • Unzip the downloaded file in /Eclipse_Platform/OSGi directory.
  • Start Eclipse (click the eclipse executable file in /Eclipse_Platform/OSGi/eclipse directory
  • In the dialog box:Workspace Launcher -> Workspace type: ./wskp/{app-type} where {app-type} could be: hello or simple or lab

Follow this tutorial to build OSGi bundels after you install Elcipse Classic

For this course you will be using the workspace defined in /Eclipse_Platform/OSGi/eclipse/wksp/...

The root directory for this course is: Eclipse_Platform

  1. Basics/eclipse subdirectory
  2. OSGi/eclipse subdirectory
  3. RCP/eclipse subdirectory
  4. Mobile/
    1. Android/eclipse subdirectory
    2. BlackBerry/eclipse subdirectory
  5. Enterprise/
    1. Virgo/eclipse subdirectory
    2. WTP/eclipse subdirectory
Ecl-course-dir-structure-new.png
Ecl-package-structure-new.png

where:

  • {topic} must be: basics or osgi or rcp or android or blackberry or virgo or wtp
  • {subject} must be: hello or simple or lab
  • {subpack} a subpackage name (if need it for complex apps)


Check your working environment by running the Hello Sample from Course Repository

You may also want to install JUnit Library to be able to debug your applications.

To install JUnit follow the instructions:

  1. Download JUnit4.x.jar from the JUnit website . The download contains a "junit-4.*.jar" which is the JUnit library.
  2. To make JUnit available in your Java project you have to add the the JUnit library file to your Java classpath. (If you do not know how to do it, please use this Eclipse tutorial to learn how to add jar files to your Eclipse project).

Steps for Building the first Bundle

1. Study the Interfaces


2. Define the BundleActivator class

The BundleActivator customizes the starting and stopping of a bundle.

BundleActivator is an interface that may be implemented when a bundle is started or stopped. The Framework can create instances of a bundle's BundleActivator as required. If an instance's BundleActivator.start method executes successfully, it is guaranteed that the same instance's BundleActivator.stop method will be called when the bundle is to be stopped. The Framework must not concurrently call a BundleActivator object.

BundleActivator is specified through the Bundle-Activator Manifest header.

package cs.ecl.osgi.simple.helloworld;

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

public class Activator implements BundleActivator {

	private static BundleContext context;

	static BundleContext getContext() {
		return context;
	}
	
	public void start(BundleContext bundleContext) throws Exception {
		Activator.context = bundleContext;
		System.out.println("Hello World from OSGi - start method in BundleActivator!");
	}
	
	public void stop(BundleContext bundleContext) throws Exception {
		Activator.context = null;
		System.out.println("Goodby World from OSGi - stop method in BundleActivator!");
	}

}

2. Define the MANIFEST.MF

for the cs.ecl.osgi.simple.helloworld bundle
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Helloworld
Bundle-SymbolicName: cs.ecl.osgi.simple.helloworld
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: cs.ecl.osgi.simple.helloworld.Activator
Bundle-Vendor: Seneca College - Eclipse Course
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: org.osgi.framework;version="1.3.0"
Bundle-ActivationPolicy: lazy

The file defines: 1. The bundle identity by headers value of Bundle-SymbolicName and Bundle-Version

  cs.ecl.osgi.simple.helloworld & 1.0.0.qualifier

2. The bundle requirements by header value of Import-Package

  org.osgi.framework;version="1.3.0"

3. The bundle activator by header value Bundle-Activator

  cs.ecl.osgi.simple.helloworld.Activator