Search code examples
maveneclipse-pluginosgiosgi-bundleequinox

Find the equinox container version which is used?


I've lots of doubts in equinox and OSGI versions. It would be very helpful if anyone could help me to understand this.

1) Is OSGI version and Eclipse Equinox Versions are different? (I think Yes) 2) If I'm running some project which uses the equinox container, then how to find which version of equinox container that project is using?

MO: I tried 'ss' command in osgi console in eclipse in the running project, it shows different types of jars org.eclipse.equinox.common.3.6v, org.eclipse.equinox.jetty.1.6v etc etc. Does that mean that the version of eclipse equinox is 3.6 which is appended behind common jar? OR Is that like, Equinox comes with eclipse and it's version is totally dependent on Eclipse Version. Say Equinox 4.5 is a bundle which comes with jars like commons, jetty, registry which has their own version? Confirm?

3) What is equinox container? How can we run an application in equinox container.


Solution

  • OSGi is a specification, and Equinox is an implementation of this specification, like Felix or Knopflerfish.

    The version of Equinox doesn't match the version of the specification. The current version of equinox if 3.10, which implements osgi r6 (afaik).

    You can see which version of OSGi implementation you are using by looking at the bundle with the id "0". It's the system bundle which export the JRE and the OSGi API. In Equinox, you can use the command b 0 or headers 0 :

    In Karaf, the command headers 0 output something like this :

    OSGi System Bundle (0)
    ----------------------
    Archiver-Version = Plexus Archiver
    Build-Jdk = 1.7.0_51
    Built-By = e4Build
    Created-By = Apache Maven 3.1.1
    Eclipse-BundleShape = jar
    Eclipse-ExtensibleAPI = true
    Eclipse-SourceReferences = scm:git:git://git.eclipse.org/gitroot/equinox/rt.equinox.framework.git;path="bundles/org.eclipse.osgi";tag="M20150204-0900";commitId=ddc1d34dfb9d45074257a5f147900781ff7ab8da
    Eclipse-SystemBundle = true
    Main-Class = org.eclipse.core.runtime.adaptor.EclipseStarter
    Manifest-Version = 1.0
    
    Bundle-Activator = org.eclipse.osgi.internal.framework.SystemBundleActivator
    Bundle-Copyright = Copyright (c) 2003, 2014 IBM Corporation and others. All rights reserved. This program and the accompanying materials  are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and i
    s available at http://www.eclipse.org/legal/epl-v10.html
    Bundle-Description = OSGi System Bundle
    Bundle-DocUrl = http://www.eclipse.org
    Bundle-Localization = systembundle
    Bundle-ManifestVersion = 2
    Bundle-Name = OSGi System Bundle
    Bundle-SymbolicName = org.eclipse.osgi; singleton:=true
    Bundle-Vendor = Eclipse.org - Equinox
    Bundle-Version = 3.10.2.v20150203-1939
    

    You can see the version in the header Bundle-Version = 3.10.2.v20150203-1939