Affects Version/s: 3.0.0
Fix Version/s: None
After applying the patch, run
in the /region module to download the region jar from eclipse and install it in your local maven repo. Then build karaf as usual (itests will fail).
Virgo and the subsystem RI (under development) use the equinox region jar for isolation in R43 frameworks. Subsystem provides a convenient way to set up some isolation containers but is much less general than the regions jar or model allow for. It might be useful both before subsystems is available and to provide the additional flexibility to integrate region based isolation in karaf.
the attached patch implements isolation and provides some minimal administration commands. Set up the desired region model in etc/regions-config.xml. The available commands are:
region:info shows the structure of the regions and which region each bundle is in
region:addbundle moves a bundle from one region (probably the root) to the specified region
region:addfilter creates a filter between regions. AFAICT once created a filter cannot be modified.
region:addregion adds a region
the model in regions-config.xml is installed only on first startup: subsequent modifications will have no effect without a clean start.
The "from" and "to" regions for a filter match the region api but seem backwards to me: a filter from R1 to R2 lets the stuff allowed by the filter in R2 be visible to R1.
Generally the practical way to install bundles into a region is to specify the (new) "region" attribute on a feature. I've set up the jpa and jndi features to install into the application region included as an example. Previously I've modified the aries 0.4-SNAPSHOT util jar to include a recursive bundle tracker that will let the blueprint extender find blueprint bundles in all regions no matter how isolated so the jpa blueprint config should get created. If it doesn't check that your aries util bundle is up to date.
As a convenience, filters to the region containing bundle 0 (the framework) allow everything exported by the framework.
Currently the itests fail, I think because the new methods on R43 Bundle are hidden by a R4.2 framework api jar earlier on the classpath somewhere in pax-. I'm hoping someone who knows how pax- works can look into this.