EJB ou Servlet - Como adicionar um 'Kill Switch' para forçar um processo / thread a parar

StackOverflow https://stackoverflow.com/questions/3283768

  •  17-09-2020
  •  | 
  •  

Pergunta

tipo de uma pergunta aberta que eu corro de vez em quando - se você tiver um feijão de ejb estado ou apátrial, ou possivelmente um processo de servlet direto, que podem com os parâmetros errados começarem a correr de um sistema de produção, comovocê poderia adicionar efetivamente em um manual 'kill switch' para um administrador / pessoa para matar especificamente esse segmento / processo?

Foi útil?

Solução

Você não pode, ou pelo menos você não deve, interferir com os encadeamentos do servidor de aplicativos.Então um "kill switch" parece definitivamente inadequado para mim em um ambiente Java EE.

Eu entendo no entanto o problema que você tem, mas preferiria sugerir tomar uma abordagem assíncrona onde você divide seu trabalho em uma unidade de trabalho menor.

Eu fiz isso usando os temporizadores EJB e fiquei feliz com o resultado: um temporizador inicial é criado para a primeira unidade de trabalho.Quando o aplicativo.O servidor executa o temporizador, ele se registra como segundo que corresponde à 2ª unidade de trabalho, etc. As informações podem ser passadas formam uma unidade de trabalho para outra porque os temporizadores EJB suportam o armazenamento de informações personalizadas.Além disso, a execução e o registro do temporizador é transacional, o que é bom para trabalhar com o banco de dados.Você pode até mesmo desligar e reiniciar o aplicativo sever com essa abordagem.Antes de cada unidade de trabalho correr, nós verificamos o banco de dados se o trabalho tivesse sido cancelado enquanto isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top