Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

OSGI component support in Service Creation

This wiki is aiming to discuss how to support users to develop OSGI based service component in STP.

Johnson Ma, Dec 27, 2007

Introduction

As more and more Middleware servers becomes OSGI based. We need to support users to create service component in the format of OSGI bundle following the Service Oriented Approach.

We plan to use Apache ServiceMix 4.0 as a reference SOA runtime here, which is based on Apache Felix OSGI implementation.

Existing OSGI tooling

PDE OSGI tooling support

"Eclipse PDE UI also provides comprehensive OSGi tooling, which makes it an ideal environment for component programming, not just Eclipse plug-in development."

Apache Felix integration with Eclipse

Felix integration with eclipse from felix site, is a solution to integrate Felix with Eclipse IDE by

*Check out felix projects into Eclipse workspace
*Add the felix.jar to java project's classpath
*Create java launch config to run org.apache.felix.main

Spring OSGI Eclipse integration

How to create a Spring OSGI bundle proejct in Eclipse

Setting up Eclipse for Spring Dynamic Modules development


Requirements for OSGI tooling from Service Creation point for view

*Replaceable OSGI runtime:Should define extension point to locate osgi runtime
*Easy dependency configuration::Help user to setup dependencies to existing bundle/service loaded in the runtime
*Manifest Editor: user friendly manifest editor following OSGI spec. Try to reuse the Manifest editor from PDE here.
*Run and Debug support::  
*OSGI Console support: should show the osgi console in eclipse 


How to create a OSGI service component

OSGI Runtime

Setup an extension point for users to assign osgi runtime to a osgi bundle project.

OSGI Bundle project wizard

In the current Eclipse env, users can create Elipse plugin or osgi bundle project from one PDE project wizard. IMHO, it will be better if we provide dedicated project wizard, such as project wizard to create "ServiceMix OSGI bundle".

Manifest Editor

Helping users to configure:

*bundle dependencies
*classpath exporting
*osgi properties in manifest file

We will reuse the Manifest editor from PDE here with some customization.

Osgi manifest editor.PNG

When users click the 'Add...' button, the default behavior for PDE will list all plugins under eclipse/plugins dir.

We need to change to show all the bundles installed in the selected OSGI runtime.


How to deploy OSGI component to runtime

There maybe two ways for the deployment:

  • Extending the WTP server framework for osgi runtime
  • or extending the PDE osgi.frameworks

I prefer the WTP based solution. since it can be better integrated with SOAS in stp.

Deploy to WTP server

*Define a WTP server extension for OSGI runtime (ServiceMix for example)
*Users can start/stop the runtime from WTP server view
*Deploy user created osgi bundle to the server

Deploy using PDE?

org.eclipse.pde.ui.osgiFrameworks extension

Create a new osgi framework extension. The following example will create a new Apache Felix OSGI framework in eclipse

<plugin>
  <extension
        point="org.eclipse.pde.ui.osgiFrameworks">
     <framework
           id="org.eclipse.stp.sc.osgi.FelixFramework"
           initializer="org.eclipse.stp.sc.internal.osgi.launcher.FelixInitializer"
           launcherDelegate="org.eclipse.stp.sc.osgi.felix.FelixLaunchConfiguration"
           name="Felix OSGI Framework">
     </framework>
  </extension>
</plugin>

launching-and-embedding-apache-felix

Preference for OSGI Framework

Windows->Preference->Plugin Development->OSGI Framworks will list all supported runtime. You can see the Apache Felix OSGI implementation we just added

Osgi framework preference.PNG

OSGI Framework launch configuration

Create launch configuration under Run>OSGI framework.

Run apache felix.PNG

How to test and debug

Users can follow steps below to debug the osgi component:

*Setup breakpoint from java source editor
*Deploy to osgi server as mentioned above
*Start the osgi server in debug mode as below.

Server view felix.PNG


OSGI Console in eclipse

Since we are starting ServiceMix using WTP server framework. The OSGI console should show in Eclipse console view. Then users can send commands, such as ss, start, stop, shutdown...etc.

Below is the console view for Eclipse Equinox, Apache Felix console should show in the similar way.

Osgi console view.PNG

User Scenarios

Spring metadata editor

The ServiceMix runtime is based on the Spring framework. We should looking into how to help users to create spring configuration --- a Spring metadata editor. (reuse editor from SpringIDE?)


Tasks List

In the end, let's summarize the tasks suggested by this wiki: (Since the ServiceMix 4.0 is not released yet. we can build the OSGI tooling base on the Spring runtime for now. It shouldn't take much effort to support ServiceMix runtime later on.)

}
ID Description Comments
1 WTP Server extension for ServiceMix 4.0 to support start/stop osgi runtime within eclipse
2 Project Wizard to create "ServiceMix OSGI Bundle" or just create any osgi bundle?
3 OSGI Runtime Extension Point *Unless the current runtime extension, we need to get bundles installed instead of jars for classpath:
  • Also need to find out exported packages from each bundle to help users to setup classpath
4 PDE Manifest Editor customization Let users to setup dependency according to the selected osgi runtime
5 OSGI Facet? Do we need to define OSGI Facet?
6 Spring Metadata Editor To editor Spring configuration files. Reuse the editor from SpringIDE?

Back to the top