JBoss Reloaded Design

Version 2

    Overview

    This document outlines the requirements of JBoss Reloaded. It says what it should be doing, not what it actually does, because of bugs and missing features.

    What is JBoss Reloaded?

    JBoss Reloaded is the low-level base of all major upcoming JBoss releases that use MicroContainer and the Virtual Deployer Framework. Be it JBoss EJB 3 Embeddable, JBoss Embedded and of course JBoss Application Server.

    It's is in fact not a really a piece of code, but a means to define said products.

     

    Reloaded uses Bootstrap to boot up the Virtual Deployer Framework framework. After which it's up to the user of Reloaded to choose a profile which will be booted using VDF. The profile defines which functions are available and thus which product is being formed.

    Why have JBoss Reloaded?

    With Reloaded existing services (which have proper SPIs) can be enabled and configured on a much finer level. Thus it is possible to have standalone JBoss Messaging server. This might not be a real product, but it allows JBM to unit test fully on the same base they'll find within JBoss Application Server.

     

    The same goes for user applications as well. By having a smaller set of services that boot up, Reloaded can be very usefull in running unit tests within the testing framework of the user.

    JBoss Bootstrap

    JBoss Bootstrap allows an user to specify a number of Microcontainer descriptor files which need to be booted up. This is done in conf/bootstrap.xml. Within each descriptor file a number of services can be defined.

     

    Bootstrap defines a standard layout set of directories which form a server layout. Note that each directory can be at a different location in the file system and Bootstrap will only assume default locations. Each service can therefore depend on a certain configuration.

    (TODO: reference to Bootstrap)

    Virtual Deployer Framework Bootstrap/Profile

    The VDF bootstrap is actually a profile that's bootstraped in place. Because Reloaded has not yet been started we need to use Bootstrap to boot the VDF up.

     

    The VDF bootstrap looks as follows:

    <?xml version="1.0" encoding="UTF-8"?>
    <!--
       The list of URLs for mc beans to load during bootstrap.
       $Id: bootstrap.xml 85526 2009-03-06 15:21:50Z emuckenhuber $
    -->
    <bootstrap xmlns="urn:jboss:bootstrap:1.0">
    
       <url>bootstrap/logging.xml</url>
       <url>bootstrap/vfs.xml</url>
       <url>bootstrap/classloader.xml</url>
       <url>bootstrap/aop.xml</url>
       <url>bootstrap/jmx.xml</url>
       <url>bootstrap/deployers.xml</url>
       <url>bootstrap/bindings.xml</url>
       <url>bootstrap/profile.xml</url>
    
    </bootstrap>
    

    logging.xml: setup a bridge between log4j and JDK logging.

    vfs.xml: setup the VFS cache (TODO: reference to VFS caching)

    classloader.xml: setup the boot class loader which ultimately delegates to the application class loader (TODO: reference to class loader setups in MC)

    aop.xml: setup the aspect manager that's used by VDF itself

    jmx.xml: (TODO) setup the aspects for JMX adviced services

    deployers.xml: this is the heart of VDF where Main deployer, AOP deployer, Bean deployer and ClassLoader deployer are setup

    bindings.xml: setup the service binding manager wherein each network port of a service is defined. A service should always delegate to the service binding manager to request its settings for network setup. (TODO: Why is this done here?)

    profile.xml: boot up the profile service

    Work in Progress

    Because not everything is yet available as a standalone component, Reloaded can't form a full VDF bootstrap yet.

    So within the current VDF bootstrap the legacy services of JBoss Application Server (ServiceMBeans) are not available. Equally so the JMX invoker bus.