Création de services personnalisés

Vous pouvez créer un ou plusieurs services personnalisés pour un serveur d'applications. Chaque service personnalisé définit une classe qui est chargée et initialisée dès que le serveur démarre et s'arrête. Chacune de ces classes doit implémenter l'interface com.ibm.websphere.runtime.CustomService. Une fois que vous aurez créé un service personnalisé, utilisez la console pour le configurer pour votre serveur d'applications.

Pourquoi et quand exécuter cette tâche

[z/OS]Les services personnalisés s'exécutent dans des objets servants, et pas dans des contrôleurs. Par exemple, étant donné que plusieurs objets servants peuvent être démarrés pendant la durée de vie d'un serveur et que ces objets servants peuvent être démarrés longtemps après le lancement du serveur (contrôleur), en fonction des besoins de WLM, un service personnalisé est exécuté au démarrage de chaque objet servant.

[z/OS]Si vous devez définir un point d'ancrage qui s'exécute quand un serveur démarre ou s'arrête, créez une classe de service personnalisé puis utilisez la console pour configurer une instance de service personnalisé. Lorsque le serveur d'applications démarre, le service personnalisé se lance et s'initialise.

[AIX Solaris HP-UX Linux Windows][IBM i]Pour définir une routine qui s'exécute dès qu'un serveur ou un noeud démarre ou s'arrête, développez une classe de service personnalisé puis configurez une instance de service personnalisé. Lorsque le serveur d'applications ou l'agent de noeud démarre, le service personnalisé se lance et s'initialise.

La liste suivante répertorie les restrictions qui s'appliquent à l'implémentation des services personnalisés du produit. La plupart de ces restrictions s'appliquent à la méthode initialize :
  • Les méthodes d'initialisation et de fermeture doivent rendre le contrôle à l'environnement d'exécution.
  • Aucun travail n'est réparti sur l'instance du serveur tant que toutes les méthodes d'initialisation des services personnalisés n'ont pas renvoyé leur contrôle.
  • Les méthodes d'initialisation et de fermeture sont appelées une seule fois sur chaque service, et une fois pour chaque processus de système d'exploitation composant l'instance du serveur.
  • L'initialisation des données statiques au niveau du processus, sans avoir à quitter le processus, est prise en charge.
  • Seules les opérations RMLT (transaction locale du gestionnaire de ressources) de JDBC sont prises en charge. Chaque unité de travail doit être terminée avant le retour des méthodes.
  • La création des unités d'exécution n'est pas prise en charge.
  • La création de sockets et d'E/S autre que le fichier d'E/S n'est pas prise en charge.
  • L'exécution de code Java EE (Java™ Platform, Enterprise Edition) standard, tel que le code client, des servlets et des bean enterprise, n'est pas pris en charge.
  • L'interface JTA (Java Transaction API) n'est pas disponible.
  • Cette fonction n'est disponible que dans les processus de serveurs Java EE et les processus de serveurs génériques répartis.
  • Il n'est pas garanti, lorsque l'exécution appelle la méthode de fermeture, que cette dernière sera appelée avant la fin du processus.
  • Les opérations JNDI demandant des ressources ne sont pas prises en charge.

Procédure

  1. Développez une classe de service personnalisée qui implémente l'interface com.ibm.websphere.runtime.CustomService.
    L'interface com.ibm.websphere.runtime.CustomService inclut une méthode initialize et une méthode shutdown. Le serveur d'applications utilise la méthode initialize pour transmettre les propriétés au service personnalisé. Ces propriétés peuvent inclure :
    • Une propriété qui indique le nom d'un fichier externe contenant les informations de configuration d'un service. La propriété externalConfigURLKey permet de récupérer ces informations.
    • Les propriétés qui contiennent des paires nom-valeur qui sont stockées pour le service, ainsi que les autres données de configuration de l'administration du système pour le service.

    Les méthodes initialize et shutdown déclarent toutes les deux qu'elles sont susceptibles de créer une exception, bien qu'aucune sous-classe d'exception spécifique ne soit définie. Si l'une des méthodes crée une exception, l'environnement d'exécution la consigne dans le journal, désactive le service personnalisé et poursuit le démarrage du serveur.

  2. Configurez le service personnalisé.

    Dans la console d'administration, cliquez sur Serveurs > Types de serveurs > Serveurs d'applications WebSphere > nom_serveur, puis, sous Server Infrastructure, cliquez sur Services personnalisés > Nouveau. Ensuite, dans la page de paramètres pour une instance de service personnalisé, créez une configuration de service personnalisé pour un serveur d'applications ou agent de noeud existant en indiquant le nom de la classe implémentée. Si votre classe de service personnalisé requiert un fichier de configuration, indiquez le chemin d'accès complet de ce fichier de configuration dans la zone URL de configuration externe. Ce nom de fichier est transmis à la classe de service personnalisé.

    Pour invoquer une bibliothèque native depuis le service personnalisé, spécifiez son nom et son chemin dans la zone Chemin d'accès aux classes, en complément des chemins servant à localiser les classes et les fichiers JAR du service personnalisé. Cette procédure ajoute le chemin au chargeur de classes de l'extension, permettant ainsi au service personnalisé de localiser et de charger correctement la bibliothèque native.

  3. Arrêtez le serveur d'applications puis redémarrez-le.

    [AIX Solaris HP-UX Linux Windows][IBM i]Si vous développez un service personnalisé pour un serveur d'applications, arrêtez-le, puis redémarrez-le.

    [AIX Solaris HP-UX Linux Windows][IBM i]Si vous développez un service personnalisé pour un agent de noeud, arrêtez puis redémarrez le traitement de cet agent. Dans la console d'administration, cliquez sur Administration système > Agents de noeud, sélectionnez l'agent de noeud que vous souhaitez arrêter, puis cliquez sur Arrêter. Pour redémarrer l'agent de noeud, sélectionnez l'agent de noeud que vous souhaitez redémarrer, puis cliquez sur Redémarrer.

    [z/OS]Arrêtez le serveur d'applications, puis redémarrez-le.

Résultats

Chaque service personnalisé définit une classe qui est chargée et initialisée dès que le serveur démarre et s'arrête.

[AIX Solaris HP-UX Linux Windows][IBM i]Le service personnalisé se charge et s'initialise dès que le serveur ou l'agent de noeud démarre ou s'arrête.

[z/OS]Le service personnalisé se charge et s'initialise dès que le serveur démarre ou s'arrête.

Exemple

Comme indiqué précédemment, votre classe de services personnalisés doit implémenter l'interface com.ibm.websphere.runtime.CustomService. De plus, votre classe doit implémenter les méthodes initialize et shutdown. L'exemple suivant présente le code qui déclare la classe ServerInit qui implémente votre service personnalisé. Ce code suppose que votre classe de service personnalisé exige un fichier de configuration. Cet exemple inclut également le code qui accède au fichier externe de configuration. Si votre classe n'exige pas de fichier de configuration, il n'est pas nécessaire d'inclure la section configProperties de ce code.
public class ServerInit implements com.ibm.websphere.runtime.CustomService
{
/**
* The initialize method is called by the application server runtime when the
* server starts. The Properties object that the application server passes
* to this method must contain all of  the configuration information that this 
* service needs to initialize properly.
*
* @param configProperties java.util.Properties
*/
    static final java.lang.String externalConfigURLKey =
       "com.ibm.websphere.runtime.CustomService.externalConfigURLKey";
          
    static String ConfigFileName="";

    public void initialize(java.util.Properties configProperties) throws Exception
    {
        if (configProperties.getProperty(externalConfigURLKey) != null)
        {
           ConfigFileName = configProperties.getProperty(externalConfigURLKey);
        }

       // Implement rest of initialize method
    }
/**
* The shutdown method is called by the application server runtime when the
* server begins its shutdown processing.
*
    public void shutdown() throws Exception
    {
        // Implement shutdown method
    }

Que faire ensuite

[AIX Solaris HP-UX Linux Windows][IBM i]Vérifiez le serveur d'applications ou l'agent de noeud et assurez-vous que les méthodes d'initialisation et de fermeture du service personnalisé sont exécutées comme prévu.

[z/OS]Vérifiez le serveur d'applications et assurez-vous que les méthodes d'initialisation et de fermeture du service personnalisé sont exécutées comme prévu.


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



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=trun_customservice
Nom du fichier : trun_customservice.html