2009/8/26 Guillaume Nodet <gno...@gmail.com>

>
>
> On Tue, Aug 25, 2009 at 17:43, Rick McGuire <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.
>>   * 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.
>
>
> In addition, and related to Config Admin, support for meta type information
> could be useful.  This allows describing what the configuration should look
> like, and this allows automatic generation of UI for configuration for
> example.  This is what the Felix web console does.
>
>
>>
>>   * 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.
>
>
> I think there is a need for integrating the UserAdmin with JAAS at some
> point.  I'm not aware of such a thing yet, but that's something I had in
> mind.
>
>
>>
>>   * 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.
>
>
> Not sure if there is a need to support both by defaults.  If we rely on
> Blueprint for example, DS could only be installed if users need that, as an
> optional add-on maybe.
>
Agree, I guess there won't be so much app based on it after blueprint
shipped. If we use blueprint, the 3-party plugin developer should also rely
on it. Otherwise, he need install the DS add-on.


>
>
>>
>>   * 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.
>>
>> 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.
>>
>> 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