web-dev-qa-db-fra.com

Comment configurer des services basés sur Java pour le démarrage?

Quel est le meilleur moyen de configurer un programme basé sur Java pour exécuter un service et démarrer au démarrage?

  • upstart (pre-start script et post-stop script?)
  • bon vieux sysv init? (start-stop-daemon?)

Dans mon cas, je suis intéressé par la configuration de Jira , qui possède ses propres scripts de démarrage et d'arrêt de type Tomcat - $JIRA_HOME/bin/startup.sh et $JIRA_HOME/bin/shutdown.sh.

3
Grzegorz Oledzki

La plupart du temps, vous pouvez supprimer une grande partie du code dans ces scripts et vous concentrer sur l'exécution du programme principal. Si vous pouvez lui dire de courir au premier plan au lieu de l’arrière-plan, cela simplifiera les choses. Sinon, vous devez utiliser 'expect fork' ou 'expect daemon' pour suivre les directives qu'un programme doit effectuer pour se détacher des terminaux de contrôle.

le pré-démarrage sert principalement à la configuration, comme la création de répertoires dans/var/run. Vous pouvez également créer un fichier de configuration, car l'environnement sera transmis à l'exécutif principal.

le post-démarrage peut être utile si vous voulez vous assurer que le programme de démarrage n’envisage pas le service démarré tant qu’une condition donnée n’est pas remplie (par exemple, le port répond aux requêtes).

En fin de compte, le but est de le rendre aussi simple que possible. Si le fichier startup.sh exécute 'jira --daemon' et que vous pouvez exécuter à la place 'jira' sans se détacher, il vous suffira de le faire par la suite

start on runlevel [2345]
stop on runlevel [!2345]

exec jira

Tant que le processus n'est pas démonisé, il est très facile pour celui-ci de suivre ce qu'il fait, ce qui conduit finalement à un fichier de travail plus simple et à un système plus robuste.

3
SpamapS