geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From John Sisson <jsis...@apache.org>
Subject Re: Modularizing Geronimo using OSGi
Date Tue, 25 Oct 2005 13:37:09 GMT
Hi Simon,

For those new to OSGi, such as myself, would you be able to give an 
overview of the benefits that OSGi would bring to Geronimo and some info 
on what parts of the OSGi framework would be used, e.g. what services 
mentioned in http://www.osgi.org/osgi_technology/index.asp?section=2 
would be used?

Would you expect geronimo's performance/footprint to be impacted through 
the use of OSGi?

Thanks,

John

Simon Burns wrote:
> I worked on the Eclipse Equinox project to bring the OSGi framework up to
> the OSGi R4 specification.  As part of that I did some prototyping of
> Geronimo on OSGi.  I have recently revisited this work and have got
> Geronimo starting successfully on OSGi.  Since there has been some
> discussion of Geronimo and OSGi on this mailing list recently I thought it
> might be useful to post what I have done.
> 
> I started with Geronimo milestone build M4 (the latest build when I
> started).  Apart from a couple of minor changes, the Geronimo code is
> untouched.  This means that it is still using the GBean framework within
> OSGi.  There were no changes to the OSGi framework.
> 
> The OSGi bundles (listed below) directly map to the Geronimo jars:
> 
>          geronimo-common
>          geronimo-core
>          geronimo-deploy-config
>          geronimo-deployment
>          geronimo-j2ee
>          geronimo-j2ee-schema
>          geronimo-kernel
>          geronimo-management
>          geronimo-naming
>          geronimo-spec-ejb
>          geronimo-spec-j2ee-connector
>          geronimo-spec-j2ee-deployment
>          geronimo-spec-j2ee-jacc
>          geronimo-spec-j2ee-management
>          geronimo-spec-jta
>          geronimo-spec-servlet
>          geronimo-system
>          geronimo-transaction
> 
> To make these projects into bundles I added OSGi meta-data into a manifest
> file.  This defines the dependencies of the bundle.  As an example here is
> the manifest for geronimo-common:
> 
>       Manifest-Version: 1.0
>       Bundle-ManifestVersion: 2
>       Bundle-Name: geronimo-common
>       Bundle-SymbolicName: geronimo_common
>       Bundle-Version: 1.0.0
>       Bundle-Localization: plugin
>       Import-Package:
>        javax.management,
>        org.apache.geronimo.kernel,
>        org.apache.xmlbeans
>       Export-Package:
>        org.apache.geronimo.common,
>        org.apache.geronimo.common.propertyeditor
>       Bundle-ClassPath: bin/, .
> 
> In addition to this I had the OSGi system bundle from Eclipse
> (org.eclipse.osgi) - I just used the latest version from HEAD in the
> Eclipse CVS repository (anonymous pserver access to
> 'dev.eclipse.org:/home/eclipse'), though any version (3.1 or later) should
> be ok (binaries of the OSGi framework are available from
> http://download.eclipse.org/eclipse/equinox).
> 
> Geronimo is dependant on quite a lot of non-Geronimo code (e.g.
> commons-logging, mx4j, etc), and so I grouped all of these jars into a
> single bundle (called 'other') and set up some appropriate meta-data for
> it.  I also had to add in 2 more jars to this project - one with
> org.objectweb.asm, and one containing the JSR173 packages.
> 
> As I mentioned earlier there were a couple of minor changes to Geronimo (in
> geronimo-system).  The first was in
> org.apache.geronimo.system.main.Daemon.doStartup().  I was getting a
> failure from some of the code in here because "startup-jar" does not
> contain a manifest.  I'm not sure how this would normally work.  I just
> commented out the lines that used the manifest.  The other change was to
> the static initializer in
> org.apache.geronimo.system.serverinfo.DirectoryUtils.  It was using a
> JarURLConnection, but running in OSGi, it gets returned a
> BundleURLConnection, so I modified it to use this instead.  Finally I added
> a bundle activator to geronimo-system so that the bundle could be started.
> This activator simply calls the main() method in Daemon.
> 
> Once all this had been done I could start up Geronimo on OSGi (using either
> the Eclipse OSGi console or my own launcher program).  I can make this work
> available if people are interested.
> 
> Simon.
> 
> 

Mime
View raw message