+

Search Tips   |   Advanced Search


Portal Application Archive (PAA) file specification


The Solution Installer uses a PAA file to automate many deployment tasks.

Using a standard directory structure for PAA archive file determines how to install a specific artifact. Many of the deployment tasks can use a default configuration found in the Solution Installer. PAA sample files that demonstrate directory structure and usage are under...


sdd.xml files

The sdd.xml file use ConfigEngine extension points to...

sdd.xml files are found at the following levels...

An assembly is made up of one or more components and an offering is made up of one or more assemblies.

The directory structure for the Solution Installer, and any offering setup details applied to the ConfigEngine, are processed automatically.

A PAA containing an update has the same assembly name in its sdd.xml file. The Solution Installer checks that the assembly exists before adding each new component or update to the current assembly.

The assembly can be made up of one or more components, each requiring a separate component level sdd.xml file.


Component level sdd.xml file overview

The component level sdd.xml file contains the information on how to install the artifacts of the component. It lists the extension pointo that need to be processed. The extension points ensure that the constituent artifacts can be installed. ANT tasks perform the actual deployment and configuration work.


Sample sdd.xml file

<iudd:iudd xmlns:iudd="http://www.ibm.com/xmlns/prod/autonomic/solutioninstall/IUDD"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:OSRT="http://www.ibm.com/xmlns/prod/autonomic/resourcemodel/OS/resourcetypes"
           xmlns:OSAT="http://www.ibm.com/xmlns/prod/autonomic/resourcemodel/OS/artifacttypes"
           xmlns:J2EERT="http://www.ibm.com/xmlns/prod/autonomic/resourcemodel/J2EE/resourcetypes"
           xsi:schemaLocation="http://www.ibm.com/xmlns/prod/autonomic/solutioninstall/IUDD../iudd/iudd.xsd"
           schemaVersion="2.0.0" 
           buildID="112220" 
           buildDate="2006-01-19T12:00:00">
 
 <packageIdentity contentType="Component">
      <name>components/componentN</name>
         <version>8.0.0.0</version>
      <displayName key="d0001" default="components/componentN" />
      <manufacturer>
         <displayName key="AC_01" default="IBM" />
      </manufacturer>
   </packageIdentity>
 
   <topology>
      <resource type="OSRT:OperatingSystem" id="OS" />
   </topology>
 
 <content xsi:type="iudd:RootIUContent">
    <rootIU id="components/componentN">
       <variables>
          <parameters>

             <parameter name="installLocation" 
                        defaultValue="/usr/dummy.offr.1" />

             <parameter name="FunctionalArea" 
                        defaultValue="featurepackSI" />
          </parameters>
       </variables>
 
    <SCU id="deploy-portlets-applySIFeaturePack" targetRef="OS">

     <identity>
          <name>Do Configuration Task</name>
          <version>8.0.0.0</version>
          <displayName key="keyInBundle"
           default="Executes Configuration for this component" />

     <description key="keyInBundle"
                  default="This section runs configuration for this component" />

      </identity>

    <unit>

     <configArtifact type="ConfigEngine">
      <parameters>
       <parameter name="targetName" 
                  value="deploy-portlets-applySIFeaturePack" />
      </parameters>
     </configArtifact>
    </unit>

   </SCU>

   <SCU id="remove-portlets-applySIFeaturePack" targetRef="OS">

    <identity>
     <name>Do Configuration Task</name>
     <version>1.0.0.0</version>
     <displayName key="keyInBundle"
      default="Executes Configuration for this component" />
     <description key="keyInBundle"
      default="This section runs configuration for this component" />
    </identity>

    <unit>
     <configArtifact type="ConfigEngine">

      <parameters>

       <parameter name="targetName" 
                  value="remove-portlets-applySIFeaturePack" />

      </parameters>

     </configArtifact>
    </unit>
   </SCU>
  </rootIU>
 </content>
 
</iudd:iudd>

See The component level sdd.xml file for information about editing the sdd.xml file.


Syntax information

The syntax for naming the component is important. There are dependencies within the PAA file that determine part of the component name registered in the sdd.xml file. You are free to name the components as we like, however when registering the names in the sdd.xml files, you should adhere to the following syntax: components/componentName.

An example of an application is the unified task list with a component name of UTL. The component name would appear in the sdd.xml file as follows: components/utl. That is the full path relative to the directory containing the assembly level sdd.xml file.

The Solution Installer follows the feature pack approach provided by the ConfigEngine to install the individual components. The advantage of this approach is that the ConfigEngine manages the installation order of the individual components. Using the feature pack approach ensures a distinction between portal core extension points and those used to install the PAA content. This approach reduces the risk of a user accidentally removing portal core components when executing a remove extension point.

The ConfigEngine runs the installation of the set of components by extension point and controls the order in which these are run.

For example, all EAR files are installed together; all portlet deployments are done at the same time. If there is a need to have an artifact of a component installed before installing another, then create a dependency in the sdd.xml file. The dependency works on an extension point basis is that it allows us to specify that artifacts covered bthat extension point can have an order.

For example, we can specify that the EAR file in component1 is installed before the EAR file in component2 etc.

The value of the FunctionalArea parameter is set to featurepackSI. This value is important so the Solution Installer can determine that the components are to be installed using the Solution Installer specific feature pack. See the sdd.xml file example at the beginning of this file for how to implement the feature pack approach.

If you examine the sdd.xml file sample at the beginning of this file, it contains a number of <SCU> elements. These are extremely important for the installation process to the ConfigEngine and to the deployment of the artifacts to WebSphere Portal and the appservers.

The <SCU> element in the component level sdd.xml file is what is used to inform the ConfigEngine which extension point it needs to extend to run the deployment. If you look in the example file, you see two <SCU> elements. The first shows how to deploy a portlet using an extension point and the second demonstrates how to remove the portlets again.

<SCU id="deploy-portlets-applySIFeaturePack" targetRef="OS">
 <identity>

   <name>Do Configuration Task</name>

   <version>1.0.0.0</version>

   <displayName key="keyInBundle" 
                default="Executes Configuration for this component" />

   <description key="keyInBundle" 
                default="This section runs configuration for this component" />

 </identity>

 <unit>
 <configArtifact type="ConfigEngine">

 <parameters>
  <parameter name="targetName" 
                  value="deploy-portlets-applySIFeaturePack" />
  </parameters>

  </configArtifact>

 </unit>

  <!—register a dependency on a previous component-->
  <requirements>

    <requirement name=" deploy-portlets-applySIFeaturePack">
     <alternative name="dependentComponent"/>
    </requirement>

  </requirements>

</SCU>

The <SCU> element example notifies the Solution Installer about the task to run. The extension point in this case is called deploy-portlets-applySIFeaturePack. This deviates from the core extension points for portal by adding ‘applySIFeaturePack’ to the end of the extension point. In the case of an uninstall task, ‘removeSIFeaturePack’ is appended instead. This allows the Solution Installer to distinguish between installation and uninstallation tasks. The reason to append these strings to the extension point names is so that there is a definite distinction between core extension points and those included for the Solution Installer to handle a PAA distribution. The Solution Installer expects and runs only extension points conforming to this format.

To use the default Solution Installer installation task for deploying portlets, no further action is required. If you require a custom installation task to deploy the portlets, create an ANT task and place it in the componentN/config/includes directory. Continuing with the previous example, a custom task for the UTL would be stored in the components/utl/config/includes directory.

The content of the task is at the discretion of the developer. The task name must follow a strict naming scheme. The task must be named as action- + extension_point_name + - + component_name. Using the UTL example, the component is called components/utl. The extension point is deploy-portlets-applySIFeaturePack. The resulting target name for the ANT task is: action-deploy-portlets-applySIFeaturePack-components/utl. The uninstallation task for the extension point is: remove-portlets-removeSIFeaturePack. The task name is: action-remove-portlets-removeSIFeaturePack-components/utl.


Parent: Portal Application Archive (PAA) file specification


Installation tasks


The Solution Installer uses two different scenarios to determine how an artifact in the PAA file is installed.

The Solution Installer uses the following two scenarios to determine how an artifact in the PAA file is installed:


Parent: Portal Application Archive (PAA) file specification


PAA file structure overview


We can find a sample top-level directory in the PORTAL_HOME/doc/paa-samples/sample1.paa file. This directory is the root directory of the PAA content. It contains the documentation and components directories and an sdd.xml file.

The sdd.xml file has the following roles:


Documentation directory

Place all documents and ID related artifacts for the application in the documentation directory.

The PAA package developer should organize the documentation directory per the relationship between the documents and the flow of content information. The Solution Installer copies the content to the correct location in the expanded archive under the PAA offering directory; for example...

The documentation directory is the only recommended place for documentation related to the application. There is currently no provision within the PAA format to provide documentation at the component level.


Components directory

The components directory and its subdirectories are located in the PAA file archive where all deployable artifacts must be stored. If you examine the content of the components directory in the provided sample PAA file, you will see just one component listed, sample1. There is always at least one component contained in a PAA file; however, there is currently no limit on the number of components that we can include.

The number of available components depend on how to organize your deployable artifacts. Potentially all the deployable artifacts can be stored in a single component. However, if there are multiple stand-alone applications to be stored in the PAA file, a component for each application is recommended. Also to be able to reuse components across PAA file distributions, then it makes sense to separate artifacts into multiple components.

There is no limit on the type of artifacts that can be contained within a specific component. There is a limitation on where the artifacts can be placed within the component directory subtree structure. These restrictions are discussed in detail in the following subsections.

As previously mentioned component can include artifacts and configuration details for an entire application. It might also only contain artifacts specific to a certain part of the application.

For example, we could include all the theme related artifacts in one component and your XML access scripts to create the pages in another component. The Solution Installer does not have a preference. For component reusability we might want to have some separation.

Use the PORTAL_HOME/doc/paa-samples/sample1.paa example, open the components/Sample1 directory. The following directories should be present as well as the component level sdd.xml file:


Parent: Portal Application Archive (PAA) file specification


PAA property files

There are two distinct types of properties containable within a PAA distribution:

Separation between both types of properties is advised.

The Solution Installer generally does not need to know the values of these properties, as in general it is custom Ant tasks provided by the developer that handle such properties. There are cases where properties required by the installer may also need to be set. In this case, these need to be included along side user editable properties.

Users need to edit such content before running the install; so it makes sense to consolidate such properties in the one place; instead of requiring the user to edit multiple files in different locations throughout the PAA. However, there is a trade off with keeping all the properties required by a component together to allow for component reuse. User editable properties are defined in the properties file specific to a component...

...which can be found in the top level directory of a component. The naming scheme of this file is important as it will be picked up by Solution Installer. Once the PAA file has been expanded, users are free to edit these as needed and can then re-run any ConfigEngine functionality associated with the component to take account of these new values. The values in this file will be the defaults for the properties and may be overwritten by parent properties files.

There are two ways in which the properties in the component level properties files can be overwritten by parent properties.

With Ant, once a property has been created in a run of the scripts, it cannot be overwritten. Therefore if we are installing multiple components that have a setting with the same name but different values, the first one to be created is used throughout the install, which can cause unexpected results. IBM recommends that a pattern for naming the properties should be employed to ensure that property names across components do not clash.

For example, a property name could have the name of the component to which it relates, prepended to the name to ensure uniqueness.


Parent: Portal Application Archive (PAA) file specification


PAA deployment

A component can use a mixture of custom and default tasks to perform the deployment and configuration of artifacts.

For example, a custom task may be used to create a datasource, or in some cases deploy a WAR file to the Portal server.

However, one restriction in the approach of Solution Installer to the use of custom tasks is that if an extension point is extended to use a custom task; all artifacts covered by this extension point in this component also must be covered by this task. For the example of the WAR file, if the extension point...

...has been extended with a custom task for that component, then all the resource files in the portlets directory must be deployed by this task, even though there may be multiple WAR files. In this way, the installer does not need to worry about trying to manage which files are covered by the custom task. Thus, either a custom task, or the default task must be used for an artifact type inside a component. There is no facility to have a hybrid of the two approaches to cover multiple files.


Order of installation of scripts and artifacts

There are many cases where the order in which scripts are run and artifacts to be deployed is important for the success of the installation. For the most part, the order in which components are installed is governed by the dependencies set in the sdd.xml file for the extension points.

The Solution Installer dictates the order in which the different extension points are called. However, if there are multiple scripts or resources of a given type to be handled by a specific extension point, there is no way to determine the correct order. If a custom task is provided, then there is no problem as the task governs the order. An issue arises when the default tasks are used to initiate the install.

To solve this issue, a properties file called order.properties can be added to any of the directories within the component hierarchy containing artifacts that must be run or installed.

For example, such a file could be added to the componentN/content/xmlaccess/install directory. This file contains a comma separated list of the file names in the correct order that they are to be deployed. If no order.properties file exists, the Solution Installer works on the assumption that the order of installation is not important.


Parent: Portal Application Archive (PAA) file specification


Virtual portals in the PAA file

There are many situations where a user might want to install the applications contained in a Portal Application Archive (PAA) file directly to a virtual portal. The PAA specification does not handle it directly.

There are no additional configuration steps taken when using the PAA format. However, the Solution Installer takes advantage of the virtual portal related properties available in wkplc.properties when creating the URL for the XMLAccess task to connect to the portal configuration. Solution Installer checks the value of the VirtualPortalHostName and VirtualPortalContext properties. If one or more of these properties are set, then their values are included in the XMLAccess URL. However, if neither of these properties is set, it is assumes that the PAA file content is to be installed to the main WebSphere Portal so the default XMLAccess connection URL will be used instead. These properties can be set in wkplc.properties, or by including them on the command line with a prefix of ‘-D’ when running the deployment.

For example, ‘-DVirtualPortalContext=testVP’. In addition, when removing resources from a virtual portal, these properties must also be set.

As the properties/parameters must be set prior to running the installer to deploy the PAA application, there is no facility to install individual components of the PAA file to different virtual portals. That is unless the install is being done manually on a component by component basis. Instead the full PAA content is deployed to the one virtual portal.


Portal Application Archive (PAA) file specification

When deploying large applications with many constituent components to IBM WebSphere Portal, there can be a large number of steps required to install each component and configure required resources. The Solution Installer automates many of these deployment tasks. The Solution Installer requires a Portal Application Archive (PAA) file to describe how to install the application and to provide the installable artifacts.

The PAA file format is used to handle deployments ranging from applications with a small number of configuration steps to large scale enterprise portal solutions. The directory structure of the PAA file is important to the Solution Installer when determining how to install a specific artifact, for example, how to handle shared library files. In addition, the software definition descriptor (sdd.xml) files also play a significant role in determining the installation steps as any extension points required for installation must be specified in an sdd.xml file local to the component.

The PAA file format offers a mechanism to allow for a reduction in the amount of work required for a developer to create a deployable solution. Many of the deployment tasks can use a default configuration found in the Solution Installer. For complex applications some additional work is required to provide custom install features. In general using the PAA file format in conjunction with the Solution Installer should reduce the production time for creating a deployable solution for the application.

A number of sample file that demonstrate the overall structure and usage of the PAA file format are included in the PORTAL_HOME/doc/paa-samples directory. These examples act as reference material for the discussion in the remainder of the file specification documentation.


Parent: Develop basic solution applications
Related:
Portal Application Archive (PAA) file creation
Checking server dependency


Component level sdd.xml file overview


The component level sdd.xml file contains the information on how to install the artifacts of the component. It lists the extension pointo that need to be processed. The extension points ensure that the constituent artifacts can be installed. ANT tasks perform the actual deployment and configuration work.


Sample sdd.xml file

<iudd:iudd xmlns:iudd="http://www.ibm.com/xmlns/prod/autonomic/solutioninstall/IUDD"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:OSRT="http://www.ibm.com/xmlns/prod/autonomic/resourcemodel/OS/resourcetypes"
           xmlns:OSAT="http://www.ibm.com/xmlns/prod/autonomic/resourcemodel/OS/artifacttypes"
           xmlns:J2EERT="http://www.ibm.com/xmlns/prod/autonomic/resourcemodel/J2EE/resourcetypes"
           xsi:schemaLocation="http://www.ibm.com/xmlns/prod/autonomic/solutioninstall/IUDD../iudd/iudd.xsd"
          schemaVersion="2.0.0" buildID="112220" buildDate="2006-01-19T12:00:00">
 
 <packageIdentity contentType="Component">
  <name>components/componentN</name>
  <version>8.0.0.0</version>
  <displayName key="d0001" default="components/componentN" />
  <manufacturer>
   <displayName key="AC_01" default="IBM" />
  </manufacturer>
 </packageIdentity>
 
 <topology>
  <resource type="OSRT:OperatingSystem" id="OS" />
 </topology>
 
 <content xsi:type="iudd:RootIUContent">

  <rootIU id="components/componentN">
   <variables>

        <parameters>
         <parameter name="installLocation" 
                    defaultValue="/usr/dummy.offr.1" />
       <parameter name="FunctionalArea" defaultValue="featurepackSI" />
    </parameters>

   </variables>
 
   <SCU id="deploy-portlets-applySIFeaturePack" 
        targetRef="OS">

    <identity>

     <name>Do Configuration Task</name>
     <version>8.0.0.0</version>
     <displayName key="keyInBundle"
      default="Executes Configuration for this component" />
     <description key="keyInBundle"
      default="This section runs configuration for this component" />

    </identity>

    <unit>

     <configArtifact type="ConfigEngine">
      <parameters>
       <parameter name="targetName" value="deploy-portlets-applySIFeaturePack" />
      </parameters>
     </configArtifact>

    </unit>

   </SCU>

   <SCU id="remove-portlets-applySIFeaturePack" targetRef="OS">

    <identity>
     <name>Do Configuration Task</name>
     <version>1.0.0.0</version>
     <displayName key="keyInBundle"
      default="Executes Configuration for this component" />
     <description key="keyInBundle"
      default="This section runs configuration for this component" />
    </identity>

    <unit>
     <configArtifact type="ConfigEngine">
      <parameters>
       <parameter name="targetName" value="remove-portlets-applySIFeaturePack" />
      </parameters>
     </configArtifact>
    </unit>
   </SCU>
  </rootIU>
 </content>
 
</iudd:iudd>

See The component level sdd.xml file for information about editing the sdd.xml file.


Syntax information

The syntax for naming the component is important. There are dependencies within the PAA file that determine part of the component name registered in the sdd.xml file. You are free to name the components as we like, however when registering the names in the sdd.xml files, you should adhere to the following syntax: components/componentName.

An example of an application is the unified task list with a component name of UTL. The component name would appear in the sdd.xml file as follows: components/utl. That is the full path relative to the directory containing the assembly level sdd.xml file.

The Solution Installer follows the feature pack approach provided by the ConfigEngine to install the individual components. The advantage of this approach is that the ConfigEngine manages the installation order of the individual components. Using the feature pack approach ensures a distinction between portal core extension points and those used to install the PAA content. This approach reduces the risk of a user accidentally removing portal core components when executing a remove extension point.

The ConfigEngine runs the installation of the set of components by extension point and controls the order in which these are run.

For example, all EAR files are installed together; all portlet deployments are done at the same time. If there is a need to have an artifact of a component installed before installing another, then create a dependency in the sdd.xml file. The dependency works on an extension point basis is that it allows us to specify that artifacts covered bthat extension point can have an order.

For example, we can specify that the EAR file in component1 is installed before the EAR file in component2 etc.

The value of the FunctionalArea parameter is set to featurepackSI. This value is important so the Solution Installer can determine that the components are to be installed using the Solution Installer specific feature pack. See the sdd.xml file example at the beginning of this file for how to implement the feature pack approach.

If you examine the sdd.xml file sample at the beginning of this file, it contains a number of <SCU> elements. These are extremely important for the installation process to the ConfigEngine and to the deployment of the artifacts to WebSphere Portal and the appservers.

The <SCU> element in the component level sdd.xml file is what is used to inform the ConfigEngine which extension point it needs to extend to run the deployment. If you look in the example file, you see two <SCU> elements. The first shows how to deploy a portlet using an extension point and the second demonstrates how to remove the portlets again.

<SCU id="deploy-portlets-applySIFeaturePack" targetRef="OS">

 <identity>
 <name>Do Configuration Task</name>
 <version>1.0.0.0</version>
  <displayName key="keyInBundle" default="Executes Configuration for this component" />
  <description key="keyInBundle" default="This section runs configuration for this   component" />
 </identity>

 <unit>
    <configArtifact type="ConfigEngine">
    <parameters>
     <parameter name="targetName" value="deploy-portlets-applySIFeaturePack" />
     </parameters>
     </configArtifact>
 </unit>

  <!—register a dependency on a previous component-->
  <requirements>
   <requirement name=" deploy-portlets-applySIFeaturePack">
   <alternative name="dependentComponent"/>
  </requirement>
  </requirements>
</SCU>

The <SCU> element example notifies the Solution Installer about the task to run. The extension point in this case is called deploy-portlets-applySIFeaturePack. This deviates from the core extension points for portal by adding ‘applySIFeaturePack’ to the end of the extension point. In the case of an uninstall task, ‘removeSIFeaturePack’ is appended instead. This allows the Solution Installer to distinguish between installation and uninstallation tasks. The reason to append these strings to the extension point names is so that there is a definite distinction between core extension points and those included for the Solution Installer to handle a PAA distribution. The Solution Installer expects and runs only extension points conforming to this format.

To use the default Solution Installer installation task for deploying portlets, no further action is required. If you require a custom installation task to deploy the portlets, create an ANT task and place it in the componentN/config/includes directory. Continuing with the previous example, a custom task for the UTL would be stored in the components/utl/config/includes directory.

The content of the task is at the discretion of the developer. The task name must follow a strict naming scheme. The task must be named as...

Using the UTL example, the component is called...

The extension point is...

The resulting target name for the ANT task is...

The uninstallation task for the extension point is:

The task name is:


Parent: Develop basic solution applications
Related: PAA file specification
PAA file creation
Checking server dependency
The assembly level sdd.xml file