The OSGi Subsystems specification standardises the multi-bundle application constructs in various projects, including Virgo's plan and PAR files. The full spec will take quite a while to implement on Virgo, so as a tactical measure, we've implemented one of the main features of Subsystems which Virgo did not previously support: the ability for plans to share their contents and thus form a Directed Acyclic Graph (DAG) rather than a "forest" of trees.
Previously, if you deployed a plan which included artefacts that were already deployed, either on their own or as part of another plan, the plan would fail to deploy. With the DAG support, the plan will share the artefacts which were already deployed. The artefacts are undeployed when they are no longer needed.
Here's an example where two plans share some artefacts (B is a plan with a single child artefact C):
|Artefacts Shared Between Plans|
This is the key functional change in Virgo 3.5.0.M03 which is available for download today. See the release notes for more details.
Meanwhile the Subsystems spec is available as a draft and should be finalised in the next month or so.