Como configurar serviços baseados em Java para inicialização?

3

Qual é a melhor maneira de configurar um programa baseado em Java para executar um serviço e iniciar na inicialização?

  • upstart ( pre-start script e post-stop script ?)
  • init antigo do SysV? ( start-stop-daemon ?)

No meu caso, estou interessado em configurar Jira , que tem seus próprios scripts de início e fim no estilo Tomcat - $JIRA_HOME/bin/startup.sh e $JIRA_HOME/bin/shutdown.sh .

    
por Grzegorz Oledzki 21.12.2010 / 18:58

1 resposta

3

Na maioria das vezes, você pode cortar muito do código desses scripts e se concentrar apenas na execução do programa principal. Se você puder dizer para ele rodar em primeiro plano em vez do plano de fundo, isso tornará as coisas mais simples. Caso contrário, você tem que usar 'esperar fork' ou 'esperar daemon' para seguir os garfos que um programa deve fazer para se desconectar dos terminais de controle.

pré-início é principalmente para configurar as coisas, como criar dirs em / var / run. Você também pode fornecer um arquivo de configuração, pois o ambiente será passado para o executor principal.

post-start pode ser útil se você quiser ter certeza de que o upstart não considera o serviço iniciado até que uma determinada condição seja atendida (como a porta está respondendo a consultas).

Por fim, o objetivo é torná-lo o mais simples possível. Se o startup.sh rodar 'jira --daemon' e você puder rodar 'jira' e ele não se separar, então com o upstart você apenas faria

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

exec jira

Desde que o processo não desmonte, é muito fácil para o iniciante rastrear o que está fazendo, o que acaba levando a um arquivo de trabalho mais simples e a um sistema mais robusto.

    
por SpamapS 30.12.2010 / 08:39