Guillaume Nodet wrote:
On Tue, Aug 25, 2009 at 17:43, Rick McGuire <rick...@gmail.com <mailto:rick...@gmail.com>> wrote:

    I've been trying to pull together some thoughts about what it might
    mean for Geronimo to enable itself for OSGi applications and what
    needs to be added to the server beyond just adopting an OSGi
    classloading model.  That sort of change would be primarily
    transparent for most existing applications, but to make the change
    worthwhile, we'd also want to make Geronimo into a real OSGi
    application platform.

    So, beyond just having the framework environment, what would be the
    require elements?  Ok, to start with, most (all?) real OSGi
    platforms have some concept of a bundle repository.  The bundle
    repository is where installed bundles are stored and there is
    generally some sort of loading/provisioning strategy associated with
    the repository that eliminates the need for an application to
    manually install and start each of its dependent bundles.  I think
    the characteristics of how the Geronimo bundle repository is a
    discussion topic all of its own, so for now, I'll just assume this
    piece is there.  As part of server bootstrap, there will be a
    configured startup of bundles from the repository that are necessary
    to bring up the server.  This will be similar to the module
    bootstrapping the server already goes through.  There will also need
    to be a mechanism for adding bundles to the repository, probably
    both as a command line tool and via the console.

    The Geronimo server will need to provision the framework with an
    initial set of services that will be available for installed bundles
    to use.  Some of these services will interact with other portions of
    the Geronimo server, while others are platform-agnostic, but provide
    important bundle-management services.  Looking through the OSGi
    compendium specifications, the following look like a good
    recommended set:
      * EventAdmin service (generalized Event broadcast service).  This is
        fairly self contained, and we can probably just use the Felix
        reference implementation.
      * Logging service.  This is a standardized OSGi logging API.  The
        reference implementation is just a circular queue and does not
        actually log entries to any persistent storage.  The Geronimo OSGi
        logging service should be integrated with the general logging
        support.  The PAX logging service looks like a good starting point
        for this.  I understand that the Geronimo Blueprint service
        implementation is already using this version.


The Blueprint impl uses an OSGi logging service if available but has not dependency on the implementation.

      * Config Admin.  This is a persistent store for configuration
    data.     I think this one will be an general expectation for many
    bundles
        that are installed on Geronimo, so we'd need to provide an
        instance of this.

How about just extending the existing Admin Console support in Felix?
We'll still need a web ui, but it should always be optional, like it is in Felix and Karaf today.

      * UserAdmin service.  This is an interface to an authentication
        system associated with a platform.  I believe this would be fairly
        simple to map to the Geronimo authentication services.
      * Declarative services.  The ability for bundles to declaratively
        publish services to the services registry.  We'd need to support
        this to allow bundles to be used portably across framework host
        environments.  This should not require any special integration
        with the rest of Geronimo.
      * Blueprint services.  A more sophisticated component assembly
        model.  This also should not require any special Geronimo
        integration.   * Preferences Service.  Allows bundles to
    persistently store
        preference information.  This is a bundle-driven capability, which
        is a bit different than the config admin service.  I'm not sure
        how prevalently this is used, so this one might not be a
    requirement.

    Interestingly, this diagram of Karaf architecture has quite a bit in
    common with what I've just described once you replace "Spring DM"
    with "Blueprint Service".  There could be an advantage to leverage
    prior experience with this environment here.


Karaf has switched to Blueprint services some time ago (I guess I need to update the web site I suppose). So there's no Spring-DM dependency anymore, though it can be easily deployed using "karaf features".

Are there are maven plugins for using Karaf in a junit environment or to help build custom Karaf assemblies?





    One key aspect to all of this is deployment and administration.  The
    Geronimo server will need to provide the conduit for deploying new
    bundles to this environment, as well as administrative function.
     The OSGi Enterprise Expert Group (EEG) is working on a
    specification for using JMX for managing OSGi environments.  The
    reference implementation for this specification includes a framework
    neutral set of MBeans for tracking installed bundles, registered
    services, config admin, etc.  These look like a good model to follow
    and can be the basis for providing console-like administration
    capabilities.  There may be additional MBeans we'd like to provide
    for other services, such as the Blueprint service.


Karaf embeds the RI for JMX management of OSGi.

I really think it would make sense to see if we can Karaf and Geronimo can collaborate together. I always have in mind Karaf becoming a TLP at some point. Improvements to Karaf would be very welcomed, I'm sure.

Karaf goal was really to be a minimal, but yet usable, OSGi runtime for server side applications, such as ServiceMix, ActiveMQ. So I don't really see why it would not be a good fit for Geronimo. And if it isn't yet, it might make sense to see how it can become so ...

    This is probably a good staring point for the discussions.  There
    are likely other facilities we'll need to add here, but I think this
is probably a good starting point for the discussions. Rick




--
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
Open Source SOA
http://fusesource.com


Reply via email to