This post will describe the current architecture of Carbon 5 Kernel.
The kernel runs on top of an OSGi framework. Eclipse Equinox is the currently used OSGi run-time framework. But the kernel has support for using any OSGi framework underneath.
Carbon 5 Kernel has a set core modules which expose some well defined API’s as services. These set of modules are as follows.
The Clustering Framework provides the clustering feature for carbon kernel which adds support for High Availability, Scalabilty and Failover
Artifact Deployment Framework
The deployment framework is responsible for managing the deployment and undeployment of artifacts in a carbon server. This also manages the Deployers (WebappDeployer, ServiceDeployers, etc), which gets plugged in to the Deployment Engine with a runtime which is explained next.
Pluggable runtime framework.
This module is responsible for handling and managing integrated 3rd party Runtime’s, such as Tomcat, Axis2, Synapse on Carbon server.
This module provides the functionality for user management (Authentication and Authorization) aspect for a carbon server.
A centralized logging framework provide logging functionality to the kernel, with the support for all the commonly used logging API’s.
Multi Tenancy & Hierarchical Tenancy
Carbon Multi Tenancy (Hierarchical) module provides the multi-tenancy aspect to carbon platform both in execution level and at OSGi level. Each and every tenant deployed in a single JVM will get his own OSGi isolated region. This would ensure class space, bundles and OSGi service level isolation for tenants and also provide application-level isolation for tenants.
Configuration & Context
The Carbon Configuration & Context model allows CarbonRuntime implementations to retrieve the configuration instance. CarbonRuntime represents the complete server space and CarbonContext is the entity which provides the CarbonRuntime related contextual information of the current executing thread. This module will also provide a model for the CarbonConfiguration (carbon.xml) to runtime.