Added by Dennis Reedy, last edited by Dennis Reedy on Apr 30, 2009  (view change)

Labels:

Enter labels to add to this page:
Wait Image 
Looking for a label? Just start typing.

The 'platform' defines the support and technology that Rio core services (Cybernode & Provisioner) include as part of their environment. Configuring the platform involves working with the RIO_HOME/config/platform directory.

This directory contains platform configuration files. The Platform configuration file is used as follows:

  • Provides attributes for creating PlatformCapability classes and declaring what jars will be common across all service classloaders. If jars are common they are loaded by the CommonClassLoader, and are in the classpath of all child class loaders. By default Rio and Jini technology jars are common across all service classloaders. For platform capabilities that are not loaded by the common classloader, services that declare that dependency will have the capability loaded by the service's classloader, providing a level of isolation from other services.
  • Provides a manifest of the platform jars that can be loaded.

Platform configuration files are loaded when Rio starts. The contents of this directory will be scanned at startup time. Each .xml file will be parsed for <platform> declarations.

The structure of the document is as follows:

<platform>
    <capability name="Foo" common="yes">
        <description>An optional description</description>
        <version>2.5</version>
        <manufacturer>An optional manufacturer</manufacturer>
        <classpath>space delimited listing of directories and/or jars</classpath>
        <path>The location on the file system where the capability is installed</path>
        <native>Any native libraries that need to be loaded</native>
        <costmodel>The resource cost model class name</costmodel>
    </capability>
</platform>

For example, Spring is included as part of the Rio platform. The spring-platform.xml document looks as follows:

<?xml version="1.0" encoding="UTF-8"?>
<!--
 Define the spring platform
-->
<platform>
    <!--
    Spring platform jars
    -->
    <capability name="Spring" common="yes">
        <description>Spring Framework</description>
        <version>2.5</version>
        <manufacturer>Interface21</manufacturer>
        <classpath>${RIO_HOME}/lib/spring
                   ${RIO_HOME}/lib/jakarta-commons</classpath>
    </capability>
</platform>

This declaration will tell Rio to load all jars in the RIO_HOME/lib/spring and RIO_HOME/lib/jakarta-commons directory, create a Platform Capability called Spring, with a version of 2.5, and advertise it.

Read more about platform capabilities here

Dynamically adding to the platform

A Cybernode's platform can be dynamically updated as part of service provisioning. As described in [Data Staging and Persistent Provisioning], you can provision software a service requires prior to instantiation. This allows software to be dynamically installed for a service, and to add that software as a platform capability. The installation is typically removed when the service terminates, but it is possible to keep the installed software resident on the compute resource the Cybernode represents, thereby adding to the Cybernode's platform dynamically.

Even if the software is removed after a service terminates, it will be available for other services once it has been installed. Installed software is only removed when all services that are using it have been terminated.