Vue d'ensemble des propriétés de récupération des services Windows

Le Java Service Wrapper fait un très bon travail de surveillance et de récupération des erreurs du processus Java. Bien que le Wrapper lui-même soit très stable, il est bon d'éviter tout point de défaillance. Le Wrapper permet d'utiliser la capacité du Gestionnaire de services Windows à redémarrer automatiquement un service qui a planté. Le fait que le Wrapper retourne un code de sortie non nul n'est pas considéré comme un échec.

Les propriétés wrapper.ntservice.recovery.<n> permettent de configurer ces fonctionnalités de récupération depuis la configuration du Wrapper. Un exemple de configuration se trouve ci-dessous.

NOTE

Ces propriétés sont utilisées lors de l'installation du Wrapper en tant que service Windows. Les modifications apportées à l'une de ces propriétés ne prendront effet qu'après la réinstallation du service Windows, mais vous pouvez modifier la configuration d'un service installé depuis l'onglet Récupération de la boîte de dialogue Propriétés du Panneau de configuration des services.

wrapper.ntservice.recovery.reset

Compatibilité :3.5.5
Éditions :Édition ProfessionnelleÉdition StandardÉdition Community (non prise en charge)
Plateformes :WindowsMac OSX (Non pris en charge)Linux (Non pris en charge)Alpine Linux (Non pris en charge)FreeBSD (Non pris en charge)Solaris (Non pris en charge)IBM z/Linux (Non pris en charge)

Le Gestionnaire de contrôle des services Windows maintient un compteur d'échecs pour chaque service installé. Chaque fois que le service se termine de manière inattendue, le compteur est incrémenté et l'action d'échec enregistrée pour ce compte est déclenchée.

Cette propriété permet de configurer le délai en secondes, sans aucune erreur, après lequel le Gestionnaire de services réinitialisera ce compteur à « 0 » (zéro). La valeur par défaut de cette propriété est 3600 (= 1 heure). Si « -1 » est défini, cela signifie que le Gestionnaire de contrôle des services ne réinitialisera jamais le compteur.

Exemple, définition du délai de réinitialisation à 86400 secondes (= 1 jour) :
wrapper.ntservice.recovery.reset=86400

NOTE

Pour éviter toute confusion, veuillez noter que l'onglet Récupération de la boîte de dialogue Propriétés du Panneau de configuration des services affiche le délai de réinitialisation en jours plutôt qu'en secondes. Cela signifie que les valeurs affichées seront arrondies à l'entier inférieur en jours. Par exemple, une valeur de 3600 secondes (1 heure) s'affichera comme « 0 » (zéro) jour.

wrapper.ntservice.recovery.command

Compatibilité :3.5.5
Éditions :Édition ProfessionnelleÉdition StandardÉdition Community (non prise en charge)
Plateformes :WindowsMac OSX (Non pris en charge)Linux (Non pris en charge)Alpine Linux (Non pris en charge)FreeBSD (Non pris en charge)Solaris (Non pris en charge)IBM z/Linux (Non pris en charge)

Le Gestionnaire de contrôle des services permet notamment d'exécuter une commande externe en réponse à un échec. Cela peut servir, par exemple, à effectuer un nettoyage ou à envoyer une notification externe.

Bien qu'il soit possible de spécifier une propriété wrapper.ntservice.recovery.<n>.failure différente pour chaque événement de récupération, l'API du Gestionnaire de contrôle des services ne permet de spécifier qu'une seule commande, qui peut ensuite être référencée comme action d'échec pour un ou plusieurs événements de récupération.

Cette propriété n'a pas de valeur par défaut et doit être spécifiée si une ou plusieurs « actions d'échec » (propriété wrapper.ntservice.recovery.<n>.failure) sont définies sur COMMAND.

Exemple :
wrapper.ntservice.recovery.command=C:\cleanup.bat

wrapper.ntservice.recovery.reboot_msg

Compatibilité :3.5.5
Éditions :Édition ProfessionnelleÉdition StandardÉdition Community (non prise en charge)
Plateformes :WindowsMac OSX (Non pris en charge)Linux (Non pris en charge)Alpine Linux (Non pris en charge)FreeBSD (Non pris en charge)Solaris (Non pris en charge)IBM z/Linux (Non pris en charge)

Si REBOOT est spécifié pour une propriété wrapper.ntservice.recovery.<n>.failure, le Gestionnaire de contrôle des services enregistrera un événement système décrivant « pourquoi le système a été redémarré ». Cette propriété permet de définir le texte de ce message.

Le message par défaut est localisé dans la langue utilisée par le Wrapper. Pour l'anglais, le message par défaut est : « System will be rebooted now due to an error in the wrapped service. »

Exemple :
wrapper.ntservice.recovery.reboot_msg=System will reboot now.

wrapper.ntservice.recovery.<n>.failure

Compatibilité :3.5.5
Éditions :Édition ProfessionnelleÉdition StandardÉdition Community (non prise en charge)
Plateformes :WindowsMac OSX (Non pris en charge)Linux (Non pris en charge)Alpine Linux (Non pris en charge)FreeBSD (Non pris en charge)Solaris (Non pris en charge)IBM z/Linux (Non pris en charge)

Cette propriété définit l'action d'échec qui doit se produire si le service Wrapper plante. Le composant « <n> » du nom de la propriété indique le numéro du compteur d'échecs.

Le Gestionnaire de contrôle des services compte le nombre de fois que chaque service a échoué depuis le démarrage du système. Le compteur est réinitialisé à « 0 » (zéro) si le service n'a pas échoué pendant au moins le nombre de secondes spécifié dans la propriété wrapper.ntservice.recovery.reset. Lorsque le service échoue, le compteur d'échecs (N) est utilisé pour décider de l'action d'échec à entreprendre. Ces actions sont définies avec la propriété wrapper.ntservice.recovery.<n>.failure, où « N » est le compteur d'échecs. Si N est supérieur à la dernière action configurée, alors l'action d'échec avec le N le plus élevé (index <n>) sera utilisée.

Les actions possibles sont :

  • NONE :

    Le Gestionnaire de services ne fera rien. C'est identique à l'absence de propriétés de récupération. Le service s'arrêtera et restera arrêté. Toute action d'échec définie avec des valeurs N plus élevées ne sera jamais atteinte.

  • RESTART :

    Le Gestionnaire de services redémarrera le service. Si vous souhaitez redémarrer l'application Java pour certains codes de sortie renvoyés par la JVM, vous pouvez également utiliser la propriété wrapper.on_exit.<n>.

  • COMMAND :

    Le Gestionnaire de services exécutera la commande spécifiée avec la propriété wrapper.ntservice.recovery.command. Si vous souhaitez que le service soit redémarré après l'exécution de la commande, cela doit être fait au sein de la commande.

  • REBOOT :

    Le Gestionnaire de services redémarrera la machine. Si le mode de « démarrage » du service est défini sur AUTO_START, le service sera redémarré après le redémarrage. Consultez la propriété wrapper.ntservice.starttype pour plus d'informations.

Exemple :
wrapper.ntservice.recovery.1.failure=RESTART
wrapper.ntservice.recovery.2.failure=COMMAND
wrapper.ntservice.recovery.3.failure=REBOOT

Bien que l'API permette de spécifier une action d'échec après NONE ou REBOOT, elles ne seront jamais utilisées.

NOTE

L'onglet Récupération de la boîte de dialogue Propriétés du Panneau de configuration des services ([Panneau de configuration] - [Outils d'administration] - [Services]) n'affichera que les 3 premières actions d'échec configurées. L'API permet toutefois d'en définir davantage. Sachez que l'utilisation de plus de 3 actions d'échec pourrait prêter à confusion pour un utilisateur consultant la boîte de dialogue.

wrapper.ntservice.recovery.<n>.delay

Compatibilité :3.5.5
Éditions :Édition ProfessionnelleÉdition StandardÉdition Community (non prise en charge)
Plateformes :WindowsMac OSX (Non pris en charge)Linux (Non pris en charge)Alpine Linux (Non pris en charge)FreeBSD (Non pris en charge)Solaris (Non pris en charge)IBM z/Linux (Non pris en charge)

Cette propriété définit le délai en secondes pendant lequel le Gestionnaire de contrôle des services attendra avant d'exécuter réellement l'action correspondante spécifiée dans wrapper.ntservice.recovery.<n>.failure.

La valeur de cette propriété ne peut pas être inférieure à « 0 » (zéro). La valeur par défaut est égale à 3 fois la valeur de la propriété wrapper.ping.timeout.

Bien qu'il soit théoriquement possible de définir un délai pour l'action d'échec « NONE », le Gestionnaire de contrôle des services ignorerait le délai dans ce cas.

Exemple, définition du délai à 90 secondes (1,5 min) :
wrapper.ntservice.recovery.1.delay=90

NOTE

Afin d'éviter toute confusion lors de la vérification du service dans la boîte de dialogue Service, onglet Récupération, veuillez noter que le délai est affiché en minutes. Cela signifie que les valeurs affichées seront arrondies à l'entier inférieur en minutes. Par exemple, une valeur de 90 secondes (1,5 min) s'affichera comme 1 minute.

Mise en pratique

L'exemple suivant va

  • définir le délai de réinitialisation à 86400 secondes (1 jour)
  • 1er échec : indiquer au Gestionnaire de contrôle des services d'attendre 90 secondes (1,5 min) avant d'exécuter l'action d'échec 1
  • 1er échec : spécifier l'action d'échec 1 comme RESTART, ce qui redémarrera le service
  • 2e échec : indiquer au Gestionnaire de contrôle des services d'attendre 180 secondes (3 min) avant d'exécuter l'action d'échec 2
  • 2e échec : spécifier l'action d'échec 2 comme COMMAND, ce qui exécutera une commande externe
  • 2e échec : définir la commande externe sur « C:\cleanup.bat »
  • 3e échec : indiquer au Gestionnaire de contrôle des services d'attendre 600 secondes (10 min) avant d'exécuter l'action d'échec 3
  • 3e échec : spécifier l'action d'échec 3 comme REBOOT, ce qui redémarrera la machine
  • 3e échec : définir le message enregistré avec le redémarrage dans les événements système sur « System will reboot now. »
Exemple :
wrapper.ntservice.recovery.reset=86400

wrapper.ntservice.recovery.1.delay=90
wrapper.ntservice.recovery.1.failure=RESTART

wrapper.ntservice.recovery.2.delay=180
wrapper.ntservice.recovery.2.failure=COMMAND
wrapper.ntservice.recovery.command=C:\cleanup.bat

wrapper.ntservice.recovery.3.delay=600
wrapper.ntservice.recovery.3.failure=REBOOT
wrapper.ntservice.recovery.reboot_msg=System will reboot now.

Vérification du résultat dans l'onglet Récupération du service Windows :

Démarrage-Redémarrage : Délai