Primavera de inicialização (Tomcat) com base aplicativo como daemon - Paragem howto?

votos
3

Eu escrevi uma mola de arranque webservice que usa um tomcat incorporado como recipiente.

No caso do sistema for reinicializado eu quero fazer backup algumas informações para um banco de dados mysql.

No meu webservice eu uso @Scheduled()e@PreDestroy para executar o backup.

Isto vai bem quando eu parar o servidor com ^ C.

Mas quando eu matar o processo com uma skript sysv (/etc/init.d ) eo comando kill - embora o daemon tem uma dependência em mysql, o servidor MySQL é desligado antes do backup for concluído (resultando em Exceções SQL no meu log).

A razão para isso é claro, que sacrificamos somente envia um sinal para parar o processo.

Como pode I (do meu sysv skript) synchroneously parar o servidor tomcat inicialização primavera correndo?

Publicado 17/11/2013 em 17:38
fonte usuário
Em outras línguas...                            


2 respostas

votos
1

Se você incluir primavera-boot-starter-atuador , em seguida, que fornece um terminal REST para a gestão. Um dos terminais fornecidos é /shutdown. Ao bater que endpoint, você vai ter um encerramento controlado de todos os recursos, o que garante que @PreDestroyserá chamado. Como isso poderia ser perigoso ter ativado por padrão, para usá-lo você precisará adicionar o seguinte ao seu arquivo application.properties:

endpoints.shutdown.enabled=true

Claro, depois de ter exposto que endpoint você precisa se certificar de que há um pouquinho de segurança aplicada para evitar qualquer pessoa desligar o servidor.

Em uma nota relacionada, você pode encontrar a minha resposta à aplicação da Primavera de inicialização como um serviço útil, onde eu fornecido o código para um script init.d completo que faz uso deste.

Respondeu 08/05/2014 em 15:05
fonte usuário

votos
1

Como uma alternativa para o "/ shutdown" ponto final do atuador também tem um ApplicationPidListener(não habilitado por padrão) que você pode usar para criar um pidfile (que é comumente usado em scripts estilo "init.d" para matar um processo quando quiser pará-lo). O JVM deve responder a uma kill (sigint) e desligamento vontade Primavera graciosamente.

Respondeu 08/05/2014 em 15:41
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more