Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Virgo/Concepts"

Line 6: Line 6:
  
 
Currently, for example, the Virgo web server packaging build uses the kernel to deploy a web server plan which includes the Gemini web container and the Virgo web bundle (which integrates Gemini web into Virgo).  
 
Currently, for example, the Virgo web server packaging build uses the kernel to deploy a web server plan which includes the Gemini web container and the Virgo web bundle (which integrates Gemini web into Virgo).  
 +
 +
The startup scripts launch the kernel which then installs, and optionally starts, each of a configurable collection of bundles to provide kernel function.
  
 
= Regions  =
 
= Regions  =
  
The kernel uses the nested framework support in Equinox to isolate the kernel from application artifacts, including artifacts which implement servers.  
+
The kernel uses the nested framework support in Equinox to isolate the kernel from application artifacts, including artifacts which implement servers. The Equinox support is being standardised, with some changes, in OSGi. As shown in the figure below, the kernel starts in a normal OSGi framework, known as the ''kernel region'', and then creates a nested framework known as the ''user region''.
 +
 
 +
[[Image:Virgo regions.png|center|500px]]
 +
 
 +
Region support was added to enable applications to run with a different version of Spring than that used by the kernel. A minimal set of Spring bundles is installed into the kernel region with very few optional dependencies which keeps the kernel footprint and startup time low. In principle, Spring could be entirely removed from the kernel region if the kernel was modified not to need Spring.
 +
 
 +
Certain packages and services are imported from the kernel region into the user region and certain services, but no packages, are exported from the user region to the kernel region. This isolates the kernel region from interference due to types and package wirings in the user region. The configuration file config/org.eclipse.virgo.kernel.userregion.properties controls the importing of packages and services into and the exporting of services out of the user region.
 +
 
 +
The content of the kernel region is controlled by the configuration file lib/org.eclipse.virgo.kernel.launch.properties. This lists bundles which are transitively closed with respect to dependencies and specifies which of these bundles are started after all the bundles are installed.
 +
 
 +
So, apart from the basic principle that no packages are exported from the user region to the kernel region, there is a lot of flexibility for changing the contents of both kernel and user regions and for specifying which packages and services are shared between the regions.
  
<br>  
+
In future, Virgo could be extended to support multiple user regions in order to isolate applications from each other.<br>  
  
 
= Scoping  =
 
= Scoping  =

Revision as of 06:13, 21 April 2010


Kernel

The Virgo kernel is the core runtime which may be used on its own or to deploy one or more server types and applications for those server types. The kernel houses the deployment pipeline, described below, as well as support for common artifact types (bundle, configuration, plan, and PAR), regions, and scoping.

Currently, for example, the Virgo web server packaging build uses the kernel to deploy a web server plan which includes the Gemini web container and the Virgo web bundle (which integrates Gemini web into Virgo).

The startup scripts launch the kernel which then installs, and optionally starts, each of a configurable collection of bundles to provide kernel function.

Regions

The kernel uses the nested framework support in Equinox to isolate the kernel from application artifacts, including artifacts which implement servers. The Equinox support is being standardised, with some changes, in OSGi. As shown in the figure below, the kernel starts in a normal OSGi framework, known as the kernel region, and then creates a nested framework known as the user region.

Virgo regions.png

Region support was added to enable applications to run with a different version of Spring than that used by the kernel. A minimal set of Spring bundles is installed into the kernel region with very few optional dependencies which keeps the kernel footprint and startup time low. In principle, Spring could be entirely removed from the kernel region if the kernel was modified not to need Spring.

Certain packages and services are imported from the kernel region into the user region and certain services, but no packages, are exported from the user region to the kernel region. This isolates the kernel region from interference due to types and package wirings in the user region. The configuration file config/org.eclipse.virgo.kernel.userregion.properties controls the importing of packages and services into and the exporting of services out of the user region.

The content of the kernel region is controlled by the configuration file lib/org.eclipse.virgo.kernel.launch.properties. This lists bundles which are transitively closed with respect to dependencies and specifies which of these bundles are started after all the bundles are installed.

So, apart from the basic principle that no packages are exported from the user region to the kernel region, there is a lot of flexibility for changing the contents of both kernel and user regions and for specifying which packages and services are shared between the regions.

In future, Virgo could be extended to support multiple user regions in order to isolate applications from each other.

Scoping

work in progress

Pipeline

work in progress

Repositories

work in progress

Back to the top