Developing a Liberty feature manually

You can create a Liberty feature manually and install it to Liberty.

Pourquoi et quand exécuter cette tâche

A feature can consist of a single OSGi bundle and a feature manifest file. This example makes a library available to applications so that the external packages are visible on the default application class path. By copying the feature manifest into the ${wlp.user.dir}/extension/lib/features directory, and the OSGi bundle into the ${wlp.user.dir}/extension/lib directory, the feature can be installed to Liberty. Then you can use the feature in your server.xml file.

For details about the format of a feature manifest file, see Fichiers manifeste de fonction Liberty.

This example describes how to construct a Liberty feature manually. Alternatively, you can use the WebSphere Application Server Developer Tools. See Création d'une fonction Liberty à l'aide des outils de développement.

Procédure

To create a Liberty feature manually, complete the following steps:

  1. Create an OSGi bundle containing your Java™ classes, and a bundle manifest file with appropriate OSGi headers, for example to export the Java packages that you want to expose to applications. Bundle-SymbolicName is the only required header; this entry specifies a unique identifier for a bundle, based on the reverse domain name convention. It is good practice to specify a version for the bundle, and in this example some Java packages are exported for application use:
    Bundle-SymbolicName: com.usr.samplebundle
    Bundle-Version: 1.0.1
    Export-Package: com.usr.samplebundle.pkg1; version="1.0.0", 
                    com.usr.samplebundle.pkg2; version="1.0.1"
  2. Utilisez la commande jar pour conditionner les classes Java et le fichier manifeste de fonction. Exemple :
    jar cfm samplebundle.jar MANIFEST.Mf *.class
  3. Créez un fichier manifeste de fonction appelé nom-fonction.mf, qui décrit la fonction dans l'environnement d'exécution.
    1. Fournissez les en-têtes de manifeste requis :
      • Subsystem-SymbolicName pour spécifier l'identité et la visibilité de la fonction ;
      • Subsystem-Content pour localiser les fichiers composant la fonction ;
      • IBM-Feature-Version pour identifier la version de la prise en charge de fonction requise par l'environnement d'exécution.
    2. Pratique recommandée : ajoutez les en-têtes de manifeste facultatifs pour indiquer la version applicable de la spécification de sous-système (Subsystem-ManifestVersion), la version de votre fonction (Subsystem-Version), et un nom abrégé de votre fonction (IBM-ShortName). La spécification de ces valeurs permettra de faire évoluer votre fonction.
    3. Dans l'en-tête IBM-API-Package, répertoriez les packages devant être fournis dans le chargeur de classe par défaut pour les applications.
    4. Facultatif : Lorsque vous créez votre fonction Liberty, vous l'installez dans l'extension de produit utilisateur, et les packages de votre fonction sont accessibles depuis les autres fonctions installées dans l'extension de produit utilisateur. Pour mettre un ou plusieurs packages de SPI à la disposition de fonctions dans d'autres extensions de produit, répertoriez les packages dans l'en-tête IBM-SPI-Package.
    Subsystem-ManifestVersion: 1.0
    Subsystem-SymbolicName: com.example.myfeature.sample-1.0; visibility:=public
    Subsystem-Version: 1.0.0.qualifier
    Subsystem-Type: osgi.subsystem.feature
    Subsystem-Content: samplebundle; version="[1,1.0.100)"
    IBM-Feature-Version: 2
    IBM-API-Package: com.usr.samplebundle.pkg1; type="api",
                     com.usr.samplebundle.pkg2; type="api"
    IBM-SPI-Package: com.sample.myservice.spi;
    IBM-ShortName: sample-1.0
  4. Copiez le bundle dans le répertoire ${wlp.user.dir}/extension/lib.
  5. Copiez le manifeste de fonction dans le répertoire ${wlp.user.dir}/extension/lib/features.
  6. Si vous avez défini les en-têtes Subsystem-Name et Subsystem-Description dans le fichier manifeste de fonction et avez localisé les valeurs, copiez les fichiers de localisation spécifiés dans l'en-tête Subsytem-Localization dans le répertoire ${wlp.user.dir}/extension/lib/features/l10n.

Résultats

Une fois votre fonction installée sous Liberty, vous pouvez ajouter le nom de la fonction à la liste des fonctions configurées dans votre fichier server.xml. Exemple :
<featureManager>
     <feature>usr:sample-1.0</feature>
</featureManager>

Icône indiquant le type de rubrique Rubrique Tâche

Nom du fichier : twlp_feat_example.html