There's been a lot of discussion about isolation in osgi, including "region" 
based isolation in virgo, composite bundle support in some versions of equinox, 
and a lot of work on the subsystems spec.  Isolation in virgo and the aries 
subsystem RI appears to be going to be based on a "region" jar in equinox that 
glyn wrote for virgo.

The subsystems spec looks like it's going to provide a very convenient way of 
setting up some kinds of isolation, but the plain regions jar while harder to 
configure allows a lot more flexibility. Also the subsystems spec won't be 
ready for a while and the RI is certainly lagging behind the spec drafts.  I 
think it would be useful right now to have a direct region-based isolation 
solution for karaf, and it might be useful to preserve the additional 
flexibility even when subsystems are available.

I've implemented a basic regions integration for karaf (trunk).  See 
https://issues.apache.org/jira/browse/KARAF-1009

Some features:

- regions are configured in etc/regions-config.xml.  This is installed on first 
startup, changes are ignored unless you do a clean start

- admin commands including region:info that shows the regions, filters, and 
which bundles are in which region.  There are some more commands described in 
the jira but they are basically useful only for playing around.

- features get a new "region" attribute making them install into the specified 
region

- Aries RecursiveBundleTracker has been modified to work with R43 hook based 
isolation (that's what the region jar uses under the covers) so the aries 
blueprint extender (and other extenders using the RecursiveBundleTracker) will 
work on bundles in isolated regions.

There's more description in the jira.

As an example, I've configured the jpa and jndi features to go in the 
application region configured in regions-config.xml.  The jpa feature has a 
blueprint plan and if you have up to date aries bundles you should see that the 
blueprint stuff is created properly.

These console commands might be interesting to try:

region:info 
bundle:list -t 0
feature:install jpa
bundle:list -t 0
region:info 
feature:install jndi
bundle:list -t 0
region:info 

I'd really appreciate some feedback on this.  I know the admin commands are 
pretty rudimentary :-)

I also know it would be pretty nice to be able to change filters once created.  
As far as I can tell so far the regions jar doesn't let you do this, and 
although I think that ability will be needed for subsystems I don't propose to 
implement it yet.

Is this something we want in karaf?


thanks
david jencks

Reply via email to