I've made some headway in my sandbox osgi framework. I now have
pretty much all the modules building as bundles and have the car-maven-
plugin working enough to build several plugins. I'm a bit stuck on a
classloading problem in which a bundle appears to be able to load a
class but not an interface it implements, in the same bundle (both
classes are imported and exported).
The car-maven-plugin works by starting a felix framework inside maven
and deploying bits of geronimo into it. In order to share classes
between maven and felix the framework has to export quite a few
classes that in a real server would be loaded from geronimo bundles.
I think the next step may be to work on getting the bundles that do
compile to run inside karaf or possibly felix. Apparently there are
some tools to help diagnose classloading problems.
With luck I may have some kind of geronimo framework server running in
karak sometime next week. Assuming that we agree to move this code
into trunk, at this point I think there will be a lot of work that can
be done more in parallel on the plugins part of geronimo. Basically
we have to go through all the geronimo code and
-- turn the jars into bundles and make sure they build
-- determine the not-yet-bundle dependencies and either convince the
source project to bundleize them or repackage them as bundles
-- set up the bundle plugin more precisely with package versions and
correct imports
-- modify the gbeans to use Bundle or BundleContext instead of
classloader
-- get the plugins to compile
-- remove unnecessary plugins such as classloader plugins
At this point we'll be able to see just how hard it is to deploy an ee
app as one or more bundles.
The framework stuff will also need more work including
-- removing unnecessary code such as a lot of the old classloaders
-- clarifying the separation between dependency management and bundle
lifecycle.
-- deciding whether to use a BundleActivator approach to start
geronimo plugins or whether to use a blueprint service-like extender
bundle listener. Currently I'm using a BundleActivator approach which
makes it difficult to communicate from one started bundle to another.
-- deciding whether to keep the kernel as a gbean registry or just
register all gbeans in the service registry as services.
thanks
david jencks