Using OSGi

I have been looking at using OSGi for a while and think that, in concept, it is the way forward for systems that I am working on.  That said; I have only had the time for some simple 'dabbling', which I find frustrating, so I still have unanswered implementation questions. Those who know me will know that I don't like 'unanswered technical questions' as they usually come back to bite you later.

The main component that has eluded me until recently is a surrounding framework to enable the use of OSGi in a real solution.  What do I mean by this... ?
  • I don't want to write everything from scratch (all those bundles to write)
  • I don't want to have to download/create/integrate lots of bundles to get started
  • I want to be able to manage/monitor bundles easily at runtime (nice web interface)
  • I need to be able to dynamically deploy new features easily
  • I need enterprise features such as clustering, transactions, logging, web-services, etc
I have looked at 'standard' OSGi environments e.g. Equinox, Knoplerfish, Felix; of these I was meandering towards Felix.  They all did the job that they said on the tin....but not much else that I wanted.  Basically I was a bit disappointed, and not looking forward to having to integrate lots of propriety and third-party jars in one of these environments. Then I was reviewing the latest version of WSO2 Application Server for our web-services when, following a bit of reading around there website, it struck me that the answer had been there all the time....WSO2 Carbon.  WSO2 have been prolific at generating new applications in the past couple of years, and this has all been done using Carbon as the base platform.  If it works for them.....why not us ?

WSO2 is basically a pre-packaged and wrapped version of Equinox. Add to this the ability to import the existing WSO2 bundles for their product range as required (which we already use).

WSO2 Carbon Base Platform

The base Carbon platform contains the following features:

  • Logging
  • Clustering
  • Security
  • Transport management
  • UI Framework (like this often forgotten)
  • Service management
  • Bundle management
  • User management
  • Throttling
  • Service registry
The nice thing about most of these features is that they are just existing OpenSource implementations; so no propriety lock in :). Also ensures that we are not locked into Carbon (They're just OSGi bundles after all). 

The Plan, so far
  1. Start with the WSO2 Carbon platform
  2. Bring in the web-services bundles (platform and UI)
  3. Develop our my own bundles for domain specific functionality. Ensure that these are implemented as stand-alone services to enable deployment in other systems/frameworks in the future.

Any way, I will post my findings here...

Interesting OSGi web pages (so I can find them again)


Popular Posts