Como lidar com operações de serviço da web de longa execução?

Eu tenho que criar um aplicativo Java EE que converte documentos grandes em diferentes formatos. Cada conversão leva entre 10 segundos e 2 minutos. As solicitações SOAP serão feitas a partir de um aplicativo cliente que eu também tenho que criar.

Qual é a melhor maneira de lidar com essas solicitações de longa duração? Claramente, o processo leva muito tempo para ser executado sem nenhum feedback para o usuário.

Posso pensar nas seguintes maneiras de fornecer algum tipo de feedback, mas não tenho certeza se não há uma maneira melhor, talvez algo padronizado.

O cliente executa a solicitação a partir de um encadeamento e o servidor envia o documento na resposta, o que pode levar alguns minutos. Até então, o cliente mostra uma mensagem "Aguarde", controle de progresso etc. (Isso parece ser simples de implementar.)O cliente envia um comando "Iniciar conversão". O servidor retorna algum tipo deID de trabalho que o cliente pode usar para pesquisar frequentemente uma atualização de status ou o documento final. (Isso parece ser fácil de usar, porque eu posso exibir um progresso, mas também exige que o servidor seja estável.)O cliente envia um comando "Iniciar conversão". De alguma forma, o servidor notifica o cliente quando terminar. (Aqui eu nem sei como fazer isso)

Existem outras abordagens? Qual é o melhor em termos de desempenho, estabilidade, tolerância a falhas, facilidade de uso etc.?

Obrigado por suas respostas.

questionAnswers(2)

yourAnswerToTheQuestion