| Startup Service |   |  
 Author: Doug Voet (dvoet at sapient.com) Version: $Revision: 1.3 $($Author: dvoet $ / $Date: 2003/04/08 17:47:47 $) Created: January 2002
   |  
  |   |  | 
             
                The Startup Service is a simple component.  It's only functionality is to load
                other components.  The default implementation uses the configuration subsystem
                to get a list of component names then uses the component subsystem to fetch
                each component.  It does not maintain references to each created component,
                it just asks the component subsystem to build them.
             
            
                The Startup Service starts components as soon as Carbon is started.  It can be used
                to execute functionality that must be completed before requests to other components
                can be allowed (e.g. Deployment Service).
             
         |  
  |   |  | 
             
                Once the Bootstrap subsystem has loaded the Configuration and Lookup Services, it calls
                the Startup Service.  The Startup Service loads all of its configured components sequentially
                in the order that they are configured on a single Thread before other requests are served.
                If, for any reason, the Startup Service fails, a warning is logged.
                If an individual component fails to start, a warning is logged, then the Startup
                Service continues, starting any other configured components.
             
         |  
  |   |  | 
             
                The Startup Service is itself a component and has a configuration document located at
                /core/StartupService.  Here is an example configuration.
             
            StartupService
            
<?xml version="1.0" encoding="UTF-8"?>
<Configuration ConfigurationInterface="org.sape.carbon.core.component.startup.StartupServiceConfiguration">
    <FunctionalImplementationClass>org.sape.carbon.core.component.startup.DefaultStartupServiceImpl</FunctionalImplementationClass>
    <FunctionalInterface>org.sape.carbon.core.component.startup.StartupService</FunctionalInterface>
    <StartupComponentArray>
        <!-- This component creates the basic Deployment Service -->
        <StartupComponent ConfigurationInterface="org.sape.carbon.core.component.startup.StartupServiceConfiguration$StartupComponentConfiguration">
            <ComponentName>/deployment/DeploymentService</ComponentName>
            <Enabled>false</Enabled>
        </StartupComponent>
        <!-- This component acts as the primary JMX MBean server and provides the web console -->
        <StartupComponent ConfigurationInterface="org.sape.carbon.core.component.startup.StartupServiceConfiguration$StartupComponentConfiguration">
            <ComponentName>/manage/DefaultMBeanServer</ComponentName>
            <Enabled>true</Enabled>
        </StartupComponent>
    </StartupComponentArray>
</Configuration>
            
            
                To add a new startup component, add a
                StartupComponent entry to the Startup Service's
                configuration.  The
                ComponentName attribute should be the absolute logical name of the component
                you wish to add.  The
                Enabled attribute allows an easy way to enable/disable the automatic
                starting of a component.
             
         |  
  |   |  | 
             
                The Startup Service is executed before the Deployment Service can be started.  This means that
                deployment specific attributes cannot be referenced in the same way as configurations using the
                Deployment Service.  If it is a requirement to enable/disable startup components based on
                environment/instance, reference Deployment Properties using
                Attribute Value References.
                Example:
             
            Example
            
<StartupComponent ConfigurationInterface="org.sape.carbon.core.component.startup.StartupServiceConfiguration$StartupComponentConfiguration">
    <ComponentName>/manage/DefaultMBeanServer</ComponentName>
    <Enabled>{management.is.enabled}</Enabled>
</StartupComponent>
            
         |  
  |