Imbrication du serveur de profil Liberty dans vos applications

Vous pouvez utiliser les interfaces de programmation de système (SPI) mises à disposition par le profil Liberty pour configurer, contrôler et surveiller un serveur de profil Liberty dans vos applications.

Pourquoi et quand exécuter cette tâche

Le profil Liberty met à disposition les interfaces de programmation de système (SPI) suivantes pour démarrer ou arrêter un serveur de profil Liberty :
  • com.ibm.wsspi.kernel.embeddable.Server
  • com.ibm.wsspi.kernel.embeddable.ServerBuilder
Utilisez un objet Future pour stocker le résultat de l'opération de démarrage ou d'arrêt. Les codes retour utilisés par les opérations imbriquées sont les mêmes que ceux utilisés par la commande server. Pour plus d'informations sur les codes retour, les options de machine virtuelle (JVM) utilisées par le script de serveur et l'environnement de processus utilisé par ce script, voir Options de la commande server.

De plus, vous pouvez recevoir des notifications asynchrones lorsque le serveur démarre, a démarré ou s'est arrêté, en créant votre propre classe qui implémente l'interface com.ibm.wsspi.kernel.embeddable.ServerEventListener.

Remarque : Pour créer une instance de serveur imbriqué dans votre application, vous devez procéder comme suit :
  • Incluez le fichier ws-server.jar dans le chemin d'accès aux classes. Le fichier ws-server.jar est situé sous le répertoire ${rép.install.wlp}/bin/tools de l'installation du profil Liberty.
  • Spécifiez le nom du serveur cible. Ce serveur doit exister.
  • Facultatif : Configurez le fichier ws-javaagent.jar avec l'option JVM -javaagent. Le fichier ws-javaagent.jar est situé sous le répertoire ${rép.install.wlp}/bin/tools de l'installation du profil Liberty. Il est recommandé de configurer le fichier ws-javaagent.jar, mais ceci n'est pas obligatoire si vous n'utilisez pas de fonctions du serveur qui l'exigent, comme le contrôle ou le traçage. Si vous devez contacter le support IBM®, des informations de trace vous seront peut-être réclamées, auquel cas vous devrez démarrer le serveur avec le fichier ws-javaagent.jar, même si vous ne l'utilisez pas habituellement.
Remarque : Dans un environnement imbriqué :
  • Les variables d'environnement ne sont pas vérifiées et les fichiers jvm.options et server.env ne sont pas lus.
  • La gestion de la machine virtuelle Java et de l'environnement est censée être assurée par l'appelant.

Procédure

  1. Importez les interfaces SPI dans votre classe appelante et définissez les arguments requis pour l'opération du serveur de profil Liberty.
    import com.ibm.wsspi.kernel.embeddable.Server;
    import com.ibm.wsspi.kernel.embeddable.ServerBuilder;
    
    public class MyEmbeddedServer {
        String serverName="defaultServer";
        File userDir = new File("usr");
        File outputDir = new File("usr/servers/");
        ...
    }
    • Le paramètre serverName est requis et doit correspondre au nom d'un serveur créé auparavant.
    • userDir est facultatif et permet de définir le chemin du répertoire utilisateur. Par défaut, le répertoire utilisateur est ${wlp.user.dir}.
    • outputDir est facultatif et permet de définir le chemin du répertoire de sortie. Par défaut, le répertoire de sortie est ${wlp.user.dir}/servers.
  2. Initialisez le serveur en utilisant la classe ServerBuilder.
        ServerBuilder sb = new ServerBuilder();
        Server libertyServer = sb.setName(serverName)
                                 .setUserDir(userDir)
                                 .setOutputDir(outputDir)
                                 .build();
  3. Appelez la méthode Server.start() afin de démarrer le serveur. Appelez get() pour utiliser l'objet Future et bloquer le résultat jusqu'à ce que l'opération de démarrage s'achève. Utilisez l'une des méthodes suivantes pour déterminer si le démarrage du serveur a abouti :
    • Examinez le code de résultat renvoyé.
    • Utilisez la méthode successful().
    • Si le serveur est démarré, la méthode server.isRunning() renvoie 'true'.
        Future<Résultat> startReturnCode = libertyServer.start();
        Result result = startReturnCode.get(); // bloquer si nécessaire jusqu'à ce que l'opération de termine
        System.out.println("Start returned: success=" + result.successful() + ", rc=" + result.getReturnCode() + ", ex=" + result.getException());
  4. Appelez la méthode Server.stop() pour arrêter le serveur. Appelez get() sur la fonction à bloquer jusqu'à ce que l'opération d'arrêt s'achève. Utilisez l'une des méthodes suivantes pour déterminer si l'arrêt du serveur a abouti :
    • Examinez le code de résultat renvoyé.
    • Utilisez la méthode successful().
    • Si le serveur est arrêté, la méthode server.isRunning() renvoie 'false'.
        Future<Résultat> stopReturnCode = libertyServer.stop();
        Result result = stopReturnCode.get(); // bloquer si nécessaire jusqu'à ce que l'opération de termine
        System.out.println("Stop returned: success=" + result.successful() + ", rc=" + result.getReturnCode() + ", ex=" + result.getException());
  5. Implémentez l'interface ServerEventListener. Si vous implémentez l'interface ServerEventListener, vous pouvez recevoir des notifications lorsque le serveur est démarré ou arrêté.
    // Mise à jour de la déclaration de classe pour indiquer qu'elle implémente ServerEventListener
    public class MyEmbeddedServer implements ServerEventListener {
        ...
        MyEmbeddedServer() throws ServerException {
            // Configuration du programme d'écoute via le générateur de serveur
            ServerBuilder sb = new ServerBuilder();
            Server libertyServer = sb.setName(serverName)
                                     .setServerEventListener(this)
                                     .build();
        }
    
        ...
        @Override
        public void serverEvent(ServerEvent event) {
            // Fourniture d'une implémentation de la méthode serverEvent
            System.out.println("serverEvent: " + event);
        }
    }

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

Dispositions pour les centres de documentation | Commentaires


Icône d'horodatage Dernière mise à jour: Wednesday, 2 September 2015
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=twlp_extend_embed
Nom du fichier : twlp_extend_embed.html