Welcome to Person Manager, a dynamic OSGi Swing application

This demo application shows how to use OSGi Declarative Services (DS), Spring Dynamic Modules (Spring DM), iPOJO and Guice/Peaberry together with Swing UI. The goal of this project is to share best practices when it comes to dynamic OSGi-based applications. Also, an experimental approach to enhance OSGi DS with annotations is part of the project, see A4DS.

If you like the OSGi demo, please flattr it:


Kai Tödter



  • Updated target platform: Equinox 3.5.2, OSGi 4.2, DS 1.2, Spring 3.0.0, Spring DM 2.0.0M1, iPOJO 1.6.0
  • New tree view using the experimental A4DS (Annotations for OSGi Declarative Services)
  • New tree view implemented using iPOJO (XML and annotations)
    • The headless build does the iPOJO jar file manipulation
  • Experimetal tree view using Google Guice + Peaberry for OSGi service injection

Running the Demo

Subversion Access


  • If you don't have svn access, you can download the latest sources and binaries  here

Building the Demo

  • Get all the projects from svn
  • Open Eclipse
  • Open all pm projects
  • Set the target platform by opening in and clicking the link "Set as target platform" in the upper right corner.
  • Launch "PM Swing OSGi Demo"
  • Play around starting and stopping the bundles, like
    • and watch the dynamic change of the Swing UI
  • You can also switch to the new bundle view and select or deselect bundles
  • If you want to use the nice Nimbus Look & Feel, run the demo with JDK 6 Update 10
  • The bundle implements the extender pattern. The bundle uses this mechnism to declare a action contribution using a new manifest header
  • Integration of Spring Dynamic Modules, the bundle and use Spring DM


  • The current version is compatible to Equinox 3.5.1
  • The project contains a complete target platform for this project
    • All necessary equinox bundles as well as the source bundles.
    • All necessary bundles for Spring Dynamic Modules, iPOJO and Peaberry
    • A target definition file ( which has to be used to set the target platform.



Starting Points

For a complete list of local wiki pages, see TitleIndex.