Version 4

    Mobicents JAIN SLEE is a highly modular cluster system, which works on top of JBoss Microcontainer, the core of the JBoss Application Server.




    The modular architecture is depicted above, the SLEE Cluster system, which has the Mobicents Cluster framework in its foundations, is composed of one or more SLEE Nodes, each a JBoss Microcontainer instance.


    The SleeContainer is the core of the SLEE Node, it manages all the SleeContainerModules, such as the SLEE facilities, the event router, or the JAIN SLEE component repository.


    TODO list and introduce all modules


    External Management is how the SLEE is managed from outside the SleeContainer, it includes components such as the JAIN SLEE specs JMX MBeans, or the External Deployer, responsible for managing persistent deployments. 


    TODO list and introduce all external management parts


    JAIN SLEE Lifecycle

    The Container's lifecycle is essential for a proper startup and shutdown, specially in a cluster environment.


    Depicted below (image taken from the specification ) is the standard JAIN SLEE 1.1 lifecycle:




    The SLEE initialization and shutdown are the state transitions that Mobicents must use to setup and clear all needed resources for the container proper execution.


    SLEE Initialization




    The diagram above depicts how SLEE is initialized, when the first STOPPED state is set the SleeContainer will indicate, to every module, that SLEE is initializing. This indication is executed between other initialization logic, for instance before the JNDI context is setup, and after the cluster is started.


    It is important that all deployable units are deployed before the cluster framework is started, otherwise it may not be possible to have a possible cluster node startup when its cluster is already in running state. For instance the cluster may need to receive and deserialize data, but be unable to find the needed classes, packed in a JAIN SLEE deployable unit. Due to this particularity the initialization of the SleeContainerDeployer module, the internal deployer, must result in the deployment of all persisted JAIN SLEE deployable units. The diagram below depicts the SLEE startup with respect to deployments and cluster startup.



    SLEE Shutdown




    Above the SLEE shutdown is depicted, a process which is symmetric to the startup. First the SLEE is stopped, which will propagate to all SleeContainer modules, and then the SLEE state is set to null, which indicates the shutdown.


    Below the same process is depicted with respect to the undeployment of JAIN SLEE deployable units, and stopping the cluster: